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 使用交叉或c_交叉计算行计数_R_Dplyr_Tidyverse_Rowwise - Fatal编程技术网

R 使用交叉或c_交叉计算行计数

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 <

我想问一个受启发的问题

给定数据帧: 输入_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       <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)