私はRプログラミングの初心者です(データ分析に使用しています)
以下のデータがあります。(トリミング版)
state storeid sales
CA 1 40,000
CA 2 44,000
CA 3 38000
MN 1 26000
MN 2 25500
上位/下位の店舗を返す関数が必要です。
次の関数を書きました。
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]))
}
上記の関数を実行すると、次のように表示されます
> head(storeinfo(1))
[1] 1
data2.idx1..1. storeid sales
2 CA 2 44,000
4 MN 1 26000
a) 最初の列 2,4 などを抑制する方法 (インデックス) b) 売上が低い店舗を見つける方法は? c) 返されたデータ フレームに異なる列名を設定する方法。