【发布时间】:2019-10-28 06:14:17
【问题描述】:
我有一个数据框,其中包含我想折叠成单个条目的组,新行的值是每个组中的最小值或最大值,具体取决于列名。
例如,给定:
set.seed(1)
dat <- data.frame(grp = c('A', 'A', 'B', 'B'),
v1_high = rnorm(4),
v2_high = rnorm(4),
v3_low = rnorm(4))
# original
grp v1_high v2_high v3_low
1 A -0.6264538 0.3295078 0.5757814
2 A 0.1836433 -0.8204684 -0.3053884
3 B -0.8356286 0.4874291 1.5117812
4 B 1.5952808 0.7383247 0.3898432
我想生成一个新数据框,其中包含与“A”和“B”组对应的两个条目,每列的最大值以_high 结尾,每列的最小值以_low 结尾。
在这种情况下:
# desired result
grp v1_high v2_high v3_low
1 A 0.1836433 0.3295078 -0.3053884
2 B 1.5952808 0.7383247 0.3898432
最后,这些列的数量和名称是事先不知道的。
理想情况下,摘要还可以处理不存在_min 列而只有_max 列的情况,尽管我总是可以手动检查这种情况并使用if () { .. } 分别处理这两种情况声明。
有什么建议吗?使用summarize_at() 函数似乎应该可以做到这一点,但我还没有弄清楚如何将不同的函数应用于不同的列集。
【问题讨论】: