gpt4 book ai didi

r - dplyr:在for循环中获得分组的最小和最大列

转载 作者:行者123 更新时间:2023-12-04 11:33:16 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Apply several summary functions on several variables by group in one call

(7 个回答)


去年关闭。




我正在尝试使用 for 循环获取几列的分组最小值和最大值:

我的数据:

df <- data.frame(a=c(1:5, NA), b=c(6:10, NA), c=c(11:15, NA), group=c(1,1,1,2,2,2))
> df
a b c group
1 1 6 11 1
2 2 7 12 1
3 3 8 13 1
4 4 9 14 2
5 5 10 15 2
6 NA NA NA 2

我的尝试:
cols <- df %>% select(a,b) %>% names()

for(i in seq_along(cols)) {
output <- df %>% dplyr::group_by(group) %>%
dplyr::summarise_(min=min(.dots=i, na.rm=T), max=max(.dots=i, na.rm=T))
print(output)
}

a 列的期望输出:
  group   min   max
<dbl> <int> <int>
1 1 1 3
2 2 4 5

最佳答案

使用 dplyr包,你可以得到:

df %>%
na.omit() %>%
pivot_longer(-group) %>%
group_by(group, name) %>%
summarise(min = min(value),
max = max(value)) %>%
arrange(name, group)

# group name min max
# <dbl> <chr> <int> <int>
# 1 1 a 1 3
# 2 2 a 4 5
# 3 1 b 6 8
# 4 2 b 9 10
# 5 1 c 11 13
# 6 2 c 14 15

关于r - dplyr:在for循环中获得分组的最小和最大列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com