【发布时间】:2013-04-13 02:46:56
【问题描述】:
我有包含五个变量的数据框。其中两个是公制测量值,其中三个包含存储为因子的组。我尝试通过不同的组在一个循环中对该数据帧进行三次子集化,并计算每个组的每个度量测量的平均值。结果可以存储为新列表中的新数据框。现在我使用了plyr 包中的subset 和ldply。单个子集没有问题,但是当我尝试将循环的结果存储在向量中时,我收到一条警告消息,指出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
所以列表中一项的输出如下所示:
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|
【问题讨论】:
-
你能举一个你想要的输出的例子吗? (我不确定您是按 group1、group2 和 group3 划分,还是在 group1 内划分,或其他)
-
当然。请参阅上面的修改。