可以通过ddply()通过某些变量对数据帧进行分组,但是如何引用分组数据框作为函数的参数?
以min()为例:
我有什么:
> BodyWeight
Treatment day1 day2 day3
1 a 32 33 36
2 a 35 35 26
3 a 33 38 46
4 b 23 24 25
5 b 22 16 34
6 b 36 35 37
7 c 45 45 39
8 c 29 26 12
9 c 43 27 36
我想要的是什么:
Treatment min
1 a 26
2 b 16
3 c 12
我做了什么,得到了什么:
> ddply(BodyWeight, .(Treatment), summarize, min= min(BodyWeight[,-1]))
Treatment min
1 a 12
2 b 12
3 c 12
min()只是一个例子,需要非特定的解决方案。
答案 0 :(得分:1)
你想要的是按治疗和日总结。问题是你有多天的日子。您需要将数据从宽格式(多列)转换为长格式(键值对)。
library(tidyr)
library(plyr)
bw_long <- gather(Bodyweight, day, value, day1:day3)
ddply(bw_long, .(Treatment, day), summarize, min = min(value))
P.S。查看plyr
,dplyr
答案 1 :(得分:1)
我们可以使用data.table
。转换&#39; data.frame&#39;到&#39; data.table&#39; (setDT(BodyWeight)
),按&#39;处理&#39;,unlist
Dataset的子集(.SD
)分组并获取min
值。
library(data.table)
setDT(BodyWeight)[, .(min = min(unlist(.SD))) , by = Treatment]
# Treatment min
#1: a 26
#2: b 16
#3: c 12