r - 使用 Dplyr 查找组的最大值并在同一个表的另一列中改变结果
问题描述
我正在使用具有数千行和多列的庞大数据集。我想使用 Dplyr 在列中查找组的最大值,并在同一个表的另一列中改变结果。这是我的数据示例:
df <- tibble(a = rep(letters[1:3], each = 3), b = seq(0.1,0.9, length.out = 9))
我想在每组 column 中找到最大值a
。我知道我可以使用以下代码在表格中的每个组中显示最大值:
df %>% group_by(a) %>% summarise_all(list(~ max(.)))
产生:
# A tibble: 3 x 2
a b
<chr> <dbl>
1 a 0.2
2 b 0.5
3 c 0.8
但这不是我想要的。我想要一个保留原始数据的表,但有一个附加列c
,以便列中的每个值将在列b
中具有相应的值,该值显示列中每个数据点所属c
的每个组中的最大值。b
我想要的结果如下:
# A tibble: 9 x 3
a b c
<chr> <dbl> <dbl>
1 a 0.1 0.3
2 a 0.2 0.3
3 a 0.3 0.3
4 b 0.4 0.6
5 b 0.5 0.6
6 b 0.6 0.6
7 c 0.7 0.9
8 c 0.8 0.9
9 c 0.9 0.9
我会很高兴得到帮助。谢谢。
解决方案
使用 mutate 而不是 summarise 应该保留所有数据。
library(dplyr)
df <- tibble(a = rep(letters[1:3], each = 3), b = seq(0.1,0.9, length.out = 9))
df %>%
group_by(a) %>%
mutate(group_max = max(b)) %>%
ungroup()
#> # A tibble: 9 x 3
#> a b group_max
#> <chr> <dbl> <dbl>
#> 1 a 0.1 0.3
#> 2 a 0.2 0.3
#> 3 a 0.3 0.3
#> 4 b 0.4 0.6
#> 5 b 0.5 0.6
#> 6 b 0.6 0.6
#> 7 c 0.7 0.9
#> 8 c 0.8 0.9
#> 9 c 0.9 0.9
由reprex 包于 2020-01-10 创建(v0.3.0)
推荐阅读
- c++ - 使用 C++ 解码为 ffmpeg 中的特定像素格式
- javascript - jQuery 在 CSV 文件中追加 HTML 表单数据
- javascript - 如何将表单值传递给 Javascript
- sql - SQL 中的动态日期查询
- python - 为什么'send_keys'命令在填充文本框后按回车键?
- r - R - 使用包含函数的变量的条件语句的语法
- c++ - Visual Studio 中 Qt 生成的模板出错
- tensorflow - 从 TensorFlow 中的另一个列表中排序一个列表
- c - 为什么程序可以得到正确的输入但根据数组打印错误的答案?
- curl - 从公共 GitHub 存储库下载问题