我有一个表格的数据框: Family Code Length Type1 A 1 11 Alpha2 A 3 8 Beta3 A 3 9 Beta4 B 4 7 Alpha5 B 5 8 Alpha6 C 6 2 Beta7 C 6 5 Beta8 C 6 4 Beta 我想通过取长度值的平均值将数据集减少到包含Code的唯一值的数
Family Code Length Type 1 A 1 11 Alpha 2 A 3 8 Beta 3 A 3 9 Beta 4 B 4 7 Alpha 5 B 5 8 Alpha 6 C 6 2 Beta 7 C 6 5 Beta 8 C 6 4 Beta
我想通过取长度值的平均值将数据集减少到包含Code的唯一值的数据集,但也保留所有字符串变量,即
Family Code Length Type 1 A 1 11 Alpha 2 A 3 8.5 Beta 3 B 4 7 Alpha 5 B 5 8 Alpha 6 C 6 3.67 Beta
我已经尝试过aggregate()和ddply(),但是这些似乎用NA替换了字符串,我正在努力找到解决这个问题的方法.
由于“族”和“类型”在“代码”组中是常量,因此在使用ddply时,您可以对这些组进行“分组”,而不会更改任何内容.如果您的原始数据集是datddply(dat, .(Family, Code, Type), summarize, Length=mean(Length))
给
Family Code Type Length 1 A 1 Alpha 11.000000 2 A 3 Beta 8.500000 3 B 4 Alpha 7.000000 4 B 5 Alpha 8.000000 5 C 6 Beta 3.666667
如果Family和Type在Code组中不是常量,那么您需要定义如何汇总/聚合这些值.在这个例子中,我只取一个唯一值:
ddply(dat, .(Code), summarize, Family=unique(Family), Length=mean(Length), Type=unique(Type))
更新
使用dplyr的类似选项是
library(dplyr) dat %>% group_by(Family, Code, Type) %>% summarise(Length=mean(Length))
和
dat %>% group_by(Code) %>% summarise(Family=unique(Family), Length=mean(Length), Type=unique(Type))