使用r根据另一列中的值聚合行中的值
我的数据如下所示:使用r根据另一列中的值聚合行中的值,r,dplyr,R,Dplyr,我的数据如下所示: Moves <- c(0, 1, 2, 3, 4, 5, 6) Men <- c(0.5, 0.3, 0.1, NA, 0.05, 0.05, NA) Women <- c(0.4, 0.5, NA, NA, NA, 0.05, 0.05) df <- tibble(Moves, Men, Women) Moves Men Women 0 0.5 0.4 1 0.3 0.5 2 0.1 NA ≥3 0.1 0.1 我
Moves <- c(0, 1, 2, 3, 4, 5, 6)
Men <- c(0.5, 0.3, 0.1, NA, 0.05, 0.05, NA)
Women <- c(0.4, 0.5, NA, NA, NA, 0.05, 0.05)
df <- tibble(Moves, Men, Women)
Moves Men Women
0 0.5 0.4
1 0.3 0.5
2 0.1 NA
≥3 0.1 0.1
我在想怎么做时遇到了一些问题。大多数关于相关问题的帖子都是关于如何在列之间聚合值的,但这里我想根据一个条件在列中进行聚合。我们可以在
时使用case\u将大于或等于3的“移动”更改为=3
,将其用作分组变量,并对其他列进行汇总
library(dplyr)
df %>%
group_by(Moves = factor(case_when( Moves >=3 ~ '>=3',
TRUE ~ as.character(Moves)), levels = c('0', '1', '2', '>=3'))) %>%
summarise(across(everything(), ~ if(all(is.na(.))) NA_real_
else sum(., na.rm = TRUE)), .groups = 'drop')
-输出
# A tibble: 4 x 3
# Moves Men Women
# <fct> <dbl> <dbl>
#1 0 0.5 0.4
#2 1 0.3 0.5
#3 2 0.1 NA
#4 >=3 0.1 0.1
我们可以在
时使用case\u将大于或等于3的“移动”更改为=3
,将其用作分组变量,并对其他列进行汇总
library(dplyr)
df %>%
group_by(Moves = factor(case_when( Moves >=3 ~ '>=3',
TRUE ~ as.character(Moves)), levels = c('0', '1', '2', '>=3'))) %>%
summarise(across(everything(), ~ if(all(is.na(.))) NA_real_
else sum(., na.rm = TRUE)), .groups = 'drop')
-输出
# A tibble: 4 x 3
# Moves Men Women
# <fct> <dbl> <dbl>
#1 0 0.5 0.4
#2 1 0.3 0.5
#3 2 0.1 NA
#4 >=3 0.1 0.1
谢谢,很好!谢谢,很好!