【发布时间】:2016-12-07 22:47:16
【问题描述】:
我有以下 data.frame (df)
ID1 ID2 Col1 Col2 Col3 Grp
A B 1 3 6 G1
C D 3 5 7 G1
E F 4 5 7 G2
G h 5 6 8 G2
我想要实现的目标如下: - 按 Grp 分组,简单 - 然后汇总,以便我对每个组的列求和,并使用所有 ID1 和 ID2 的字符串创建列
应该是这样的:
df %>%
group_by(Grp) %>%
summarize(ID1s=toString(ID1), ID2s=toString(ID2), Col1=sum(Col1), Col2=sum(Col2), Col3=sum(Col3))
一切都很好,我知道列数(Col1,Col2,Col3),但是我希望能够实现它,以便它适用于已知且始终命名为相同 ID1、ID2 的数据框、Grp 和任意数量的未知名称的附加数字列。
有没有办法在 dplyr 中做到这一点。
【问题讨论】:
-
你试过了吗?
summarise_at(vars(starts_with("Col")), sum) -
您如何将它与要汇总到的其他列以及可能不同/未知的名称而不是 Col1、col2 等一起使用
-
如果可能的名称未知,您会建议计算机如何找到它们?
-
跟进 Pierre 的评论,您想要引用的列有什么不同? Grp 列是否总是最后一列?在这种情况下,您将寻找一种方法来引用除最后一列之外的所有列。想想您作为人类如何知道自己在寻找什么,然后我们就可以让计算机找到它。
-
为了记录,默认不区分大小写