R 使用交叉或c_交叉计算行计数
我想问一个受启发的问题 给定数据帧: 输入_df 将产生这个新的数据帧R 使用交叉或c_交叉计算行计数,r,dplyr,tidyverse,rowwise,R,Dplyr,Tidyverse,Rowwise,我想问一个受启发的问题 给定数据帧: 输入_df 将产生这个新的数据帧 > output_df num_col_1 num_col_2 text_col_1 text_col_2 sum_yes 1 1 4 yes yes 2 2 2 5 no yes 1 3 3 6 no <
> output_df
num_col_1 num_col_2 text_col_1 text_col_2 sum_yes
1 1 4 yes yes 2
2 2 5 no yes 1
3 3 6 no <NA> 0
>输出
数值列1数值列2文本列1文本列2总和是
1 1 4是是2
2 5否是1
三三六零
问题是,你如何处理现代的dplyr动词和c_动词
谢谢。1)c_over此处c_over
返回一行TIBLE,其中包含由其参数指示的列
library(dplyr)
input_df %>%
rowwise %>%
mutate(sum = sum( c_across(starts_with("text")) == "yes", na.rm = TRUE)) %>%
ungroup
input_df %>%
mutate(sum = rowSums( across(starts_with("text")) == "yes", na.rm = TRUE))
给予:
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 2
2 2 5 no yes 1
3 3 6 no <NA> 0
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 5
2 2 5 no yes 5
3 3 6 no <NA> 0
把分数加起来表示是
如果有兴趣对“是”值对应的分数求和:
3)c_横跨
library(dplyr)
input_df %>%
rowwise %>%
mutate(sum = sum( c_across(starts_with("num")) *
(c_across(starts_with("text")) == "yes"), na.rm = TRUE)) %>%
ungroup
给予:
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 2
2 2 5 no yes 1
3 3 6 no <NA> 0
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 5
2 2 5 no yes 5
3 3 6 no <NA> 0
注
可复制形式的输入:
Lines <- " num_col_1 num_col_2 text_col_1 text_col_2
1 1 4 yes yes
2 2 5 no yes
3 3 6 no NA"
input_df <- read.table(text = Lines)
Lines1)c_-overs此处c_-overs
返回一行TIBLE,其中包含由其参数指示的列
library(dplyr)
input_df %>%
rowwise %>%
mutate(sum = sum( c_across(starts_with("text")) == "yes", na.rm = TRUE)) %>%
ungroup
input_df %>%
mutate(sum = rowSums( across(starts_with("text")) == "yes", na.rm = TRUE))
给予:
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 2
2 2 5 no yes 1
3 3 6 no <NA> 0
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 5
2 2 5 no yes 5
3 3 6 no <NA> 0
把分数加起来表示是
如果有兴趣对“是”值对应的分数求和:
3)c_横跨
library(dplyr)
input_df %>%
rowwise %>%
mutate(sum = sum( c_across(starts_with("num")) *
(c_across(starts_with("text")) == "yes"), na.rm = TRUE)) %>%
ungroup
给予:
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 2
2 2 5 no yes 1
3 3 6 no <NA> 0
# A tibble: 3 x 5
num_col_1 num_col_2 text_col_1 text_col_2 sum
<int> <int> <chr> <chr> <int>
1 1 4 yes yes 5
2 2 5 no yes 5
3 3 6 no <NA> 0
注
可复制形式的输入:
Lines <- " num_col_1 num_col_2 text_col_1 text_col_2
1 1 4 yes yes
2 2 5 no yes
3 3 6 no NA"
input_df <- read.table(text = Lines)
行