Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用r根据另一列中的值聚合行中的值_R_Dplyr - Fatal编程技术网

使用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

谢谢,很好!谢谢,很好!