Je suis un débutant à la programmation R (en l'utilisant pour l'analyse de données)Fonction R retournant la trame de données (colonne supplémentaire)
J'ai les données suivantes. (version rognée)
state storeid sales
CA 1 40,000
CA 2 44,000
CA 3 38000
MN 1 26000
MN 2 25500
J'ai besoin d'une fonction qui retourne les mémoires les plus performantes/les moins performantes.
J'ai écrit la fonction suivante.
storeinfo<-function(num="top") {
df<-read.csv("store.csv")
bestVal <- 1;
if (!missing(num)) {
if(is.numeric(num)){
bestVal = as.numeric(num);
}
if(num=="top"){
bestVal <-1
}
if (num=="poor"){
bestVal<-0
}
}
print(bestVal)
data2<-subset(df[,c(1,2,3)])
data2<-data2[order(as.numeric(data2$sales), data2$storeid,na.last=TRUE,decreasing=TRUE), ]
idx<-tapply(1:NROW(data2),data2$state,"[",bestVal)
idx1<-tapply(1:NROW(data2),data2$state,"[",1)
return (data.frame(data2[idx1,1],data2[idx,2:3]))
}
quand j'exécute la fonction ci-dessus, je vois ce qui suit
> head(storeinfo(1))
[1] 1
data2.idx1..1. storeid sales
2 CA 2 44,000
4 MN 1 26000
a) Comment supprimer la première colonne 2,4 etc? (Index) b) Comment trouver les magasins dont les ventes sont faibles? c) Comment définir différents noms de colonne pour la trame de données renvoyée.
La première colonne est pas; Ce sont les noms de ligne de votre nom de fichier. Vous pouvez faire 'rownames (yourobject) <- NULL' si vous voulez les remplacer par 1, 2, 3, etc. Vous pouvez également changer les noms des colonnes en utilisant' colnames (yourobject) <- c ("state", "storeid "," ventes ")'. Le reste est trop confus pour moi. En particulier, vous n'avez pas défini ce que vous entendez par "magasin" en ce qui concerne "state" et "storeid". – flodel
retdf <-data.frame (données2 [idx1,1], données2 [idx, 2: 3]) retdf.rownames <-NULL Après cela, je vois des noms de lignes dans la sortie. – satya
retdf <-data.frame (données2 [idx1,1], données2 [idx, 2: 3], row.names = NULL) return (retdf) Cependant, je vois des noms de lignes dans la sortie. – satya