0
考虑这种情况,我想要在summarize_each
中使用混合列类型的data.frame。如何总结每列混合列类
> (temp=data.frame(ID=c(1,1,2,2),gender=c("M","M","F","F"),val1=rnorm(4),val2=rnorm(4)))
ID gender val1 val2
1 1 M -1.7944804 0.5232313
2 1 M 0.3938437 -0.8424086
3 2 F -0.3190777 0.3220580
4 2 F 1.3667340 -0.6031376
> temp%>%group_by(ID)%>%summarize_each(funs(mean))
Source: local data frame [2 x 4]
ID gender val1 val2
(dbl) (lgl) (dbl) (dbl)
1 1 NA -0.7003184 -0.1595886
2 2 NA 0.5238282 -0.1405398
这不起作用,因为mean(gender)
没有意义。
问题: 如果我所有的非数字列的ID
特点,因此,每个ID
内是相同的,可不知何故,我得到summarize_each
回到那“独一无二”的价值?
> temp%>%group_by(ID,gender)%>%summarize_each(funs(mean))
Source: local data frame [2 x 4]
Groups: ID [?]
ID gender val1 val2
(dbl) (fctr) (dbl) (dbl)
1 1 M -0.7003184 -0.1595886
2 2 F 0.5238282 -0.1405398
是我想要的输出,但我有点喜欢这种感觉是做不必要的嵌套group_by
因为实在是没什么好组内ID
。
'TEMP%>%GROUP_BY(ID)%>%summarize_each(玩意儿(平均值),VAL1:val2的)'或另一种选择是'TEMP%>%GROUP_BY(ID)%>%summarise_if(是。数字,平均数)' – akrun
@akrun我更新了问题以使其更清晰。我确实希望返回具有唯一值的性别列。 – qoheleth
您可以在'summarise_each'中传递多个函数,但是它会为所有列执行此操作。你真的需要dplyr还是可以有其他解决方案?我认为用'dplyr',可能不能用'summarise_each' – akrun