【发布时间】:2017-08-17 22:56:28
【问题描述】:
我正在尝试根据前两列中的值的组合选择数据框第三列中的最大值。
我的问题类似于this one,但我找不到实现我需要的方法。
编辑:更改示例数据以使列名更明显。
这是一些示例数据:
library(tidyr)
set.seed(1234)
df <- data.frame(group1 = letters[1:4], group2 = letters[1:4])
df <- df %>% expand(group1, group2)
df <- subset(df, subset = group1!=group2)
df$score <- runif(n = 12,min = 0,max = 1)
df
# A tibble: 12 × 3
group1 group2 score
<fctr> <fctr> <dbl>
1 a b 0.113703411
2 a c 0.622299405
3 a d 0.609274733
4 b a 0.623379442
5 b c 0.860915384
6 b d 0.640310605
7 c a 0.009495756
8 c b 0.232550506
9 c d 0.666083758
10 d a 0.514251141
11 d b 0.693591292
12 d c 0.544974836
在此示例中,第 1 行和第 4 行是“重复”。我想选择第 4 行,因为 score 列中的值大于第 1 行中的值。最终,我希望返回一个数据框,其中包含 group1 和 group2 列以及 score 列中的最大值。所以在这个例子中,我希望返回 6 行。
如何在 R 中做到这一点?
【问题讨论】:
-
df %>% group_by(a,b) %>% summarise(score=max(score))
-
@HubertL 在发布问题之前我曾尝试过,但 group_by 按顺序处理这些因素,这意味着示例中的第 1 行和第 4 行仍将被视为不同的组,当我希望它们被考虑时作为同一组。
标签: r max unique combinations