【发布时间】:2017-12-16 07:39:38
【问题描述】:
这里是新人,对 R 来说也是新人,所以请多多包涵。
我有一个类似这样的data.frame:
time. variable TEER
1 0.07 cntrl 234.2795
2 1.07 cntrl 602.8245
3 2.07 cntrl 703.6844
4 3.07 cntrl 699.4538
...
48 0.07 cntrl 234.2795
49 1.07 cntrl 602.8245
50 2.07 cntrl 703.6844
51 3.07 cntrl 699.4538
...
471 0.07 agr1111 251.9119
472 1.07 agr1111 480.1573
473 2.07 agr1111 629.3744
474 3.07 agr1111 676.6782
...
518 0.07 agr1111 251.9119
519 1.07 agr1111 480.1573
520 2.07 agr1111 629.3744
521 3.07 agr1111 676.6782
...
753 0.07 agr2222 350.1049
754 1.07 agr2222 306.6072
755 2.07 agr2222 346.0387
756 3.07 agr2222 447.0137
757 4.07 agr2222 530.2433
...
802 2.07 agr2222 346.0387
803 3.07 agr2222 447.0137
804 4.07 agr2222 530.2433
805 5.07 agr2222 591.2122
我正在尝试将ddply() 应用于此数据框,以获取具有平均值和标准误差(稍后绘制)的新数据框,如下所示:
> ddply(data_melt, c("time.", "variable"), summarise,
mean = mean(TEER), sd = sd(TEER),
sem = sd(TEER)/sqrt(length(TEER)))
作为输出数据框,我得到的 TEER 在 mean 列中的值与原始数据框的第一行中的值相同,而在 sd 和 sem 列中的值相同。还有一个错误:
警告信息:
在
levels<-(*tmp*, value = if (nl == nL) as.character(labels) else paste0(labels, : 不推荐使用因子中的重复级别
看起来该函数只遍历数据框的第一部分,而不费心查看time. 和variable 组的重复项?
我已经尝试在这里查看类似问题的解决方案,但似乎没有任何效果。我错过了什么还是这是一个合法的问题?
感谢任何帮助/提示。
P.S 如果我对问题的解释不够连贯,请告诉我,我会尽量详细说明。
【问题讨论】:
-
第二个参数应该是
ddply()内的“变量”,它代表group-by变量。还要确保你只加载了这个包.. sumarize 也在Hmisc和dplyr中,因此这个警告 -
将其更改为“变量”。错误:nrow(labels) == length(null) is not TRUE 除了之前的相同警告消息外还出现。
-
它应该可以工作.. 确保您的会话命名空间正在调用
plyr::summarise本身 -
确保只加载了 plyr 包,但仍然是同样的问题。另外,您说第二个参数应该只是“变量”,但我也希望它们也按时间分组,因此 c("time.", "variable").