5 つの変数を含むデータフレームがあります。そのうちの 2 つはメトリック測定値であり、そのうちの 3 つは係数として格納されたグループを含んでいます。このデータフレームをループ内で 3 回、異なるグループごとにサブセット化し、グループごとの各メトリック測定値の平均を計算しようとしました。結果は、新しいリスト内の新しいデータフレームとして保存できます。今のところ私は使用subset
しldply
てplyr
パッケージから。単一のサブセットは問題ありませんが、ループからの結果をベクトルに格納しようとすると、number of items to replace is not a multiple of replacement length
. サンプルコードは以下にあります。どんな助けでも大歓迎です!
df<-data.frame(a=c(1:5),b=c(21:25),group1=c("a","b","a","a","b"),group2=c("b","a","c","b","c"),group3=c("a","b","c","d","c"))
# single subset
llply(subset(df,group1=="a")[1:2],mean)
# subset for all groups
# create grouplist
grouplist<-colnames(df[3:5])
# create vector to store results
output.vector<-vector()
# create loop
for (i in grouplist)output.vector[i]<-ldply(subset(df,grouplist=="a")[1:2],mean)
output.vector
Warning messages:
1: In output.vector[i] <- ldply(subset(df, grouplist == "a")[1:2], :
number of items to replace is not a multiple of replacement length
したがって、リスト内の 1 つの項目の出力は次のようになります。
output.vector$group1
|a| | b|
|a| |2.67| |3.5|
|b| |22.7| |23.5|
output.vector$group2
|a| | b| |c|
|a| |2| |2.5| |4|
|b| |22| |22.5| |24|
output.vector$group3
|a| |b| |c| |d|
|a| |1| |2| |4| |4|
|b| |21| |22| |24| |14|