管道 rowsums 的简单方法
Simple way to pipe rowsums
我有以下数据框(显示头部样本)
dput(sample)
structure(list(VR1 = c(NA, NA, 1L, NA, 0L, NA), VR2 = c(NA,
NA,
NA, NA, NA, NA), VR3 = c(NA, NA, 0L, NA, 0L, NA), VR4 = c(NA,
NA, 1L, NA, 0L, NA), VR5 = c(NA, NA, 1L, NA, 1L, NA), VR6 =
c(NA,
NA, 0L, NA, 0L, NA), VR7 = c(NA, NA, 1L, NA, 0L, NA), VR8 =
c(NA,
NA, 0L, NA, 0L, NA), VR9 = c(NA, NA, 1L, NA, 1L, NA), VR10 =
c(NA,
NA, 1L, NA, 0L, NA), VR11 = c(NA, NA, 0L, NA, 0L, NA), VR12 =
c(NA,
NA, 0L, NA, 0L, NA), VR13 = c(NA, NA, 1L, NA, 0L, NA), VR14 =
c(NA,
NA, 1L, NA, 0L, NA), VR15 = c(NA, NA, 1L, NA, 1L, NA), VR16 =
c(NA,
NA, 0L, NA, 0L, NA), VR17 = c(NA, NA, 1L, NA, 0L, NA), VR18 =
c(NA,
NA, 1L, NA, 1L, NA), VR19 = c(NA, NA, 1L, NA, 0L, NA), VR20 =
c(NA,
NA, 1L, NA, 0L, NA)), row.names = c(NA, 6L), class =
"data.frame")
我正在做很多以前的操作(例如删除列),但我没有找到将简单的行和传递到新列的函数。这是我一直在尝试的
sample <- sample %>% mutate(total = rowSums(1:20))
我一直在网上找
sum(c_across
但 R 无法识别它,尽管加载了 tidyverse 和 dplyr
dplyr
选项会 c_across()
但它需要一个行 ID:
library(dplyr)
#Code
sample %>% mutate(id=1:n())%>%
rowwise(id) %>%
mutate(total=sum(c_across(VR1:VR20),na.rm=T))
输出:
# A tibble: 6 x 22
# Rowwise: id
VR1 VR2 VR3 VR4 VR5 VR6 VR7 VR8 VR9 VR10 VR11 VR12 VR13 VR14 VR15 VR16
<int> <lgl> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
3 1 NA 0 1 1 0 1 0 1 1 0 0 1 1 1 0
4 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
5 0 NA 0 0 1 0 0 0 1 0 0 0 0 0 1 0
6 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
# ... with 6 more variables: VR17 <int>, VR18 <int>, VR19 <int>, VR20 <int>, id <int>, total <int>
使用的数据是您分享的 dput(sample)
。
我有以下数据框(显示头部样本)
dput(sample)
structure(list(VR1 = c(NA, NA, 1L, NA, 0L, NA), VR2 = c(NA,
NA,
NA, NA, NA, NA), VR3 = c(NA, NA, 0L, NA, 0L, NA), VR4 = c(NA,
NA, 1L, NA, 0L, NA), VR5 = c(NA, NA, 1L, NA, 1L, NA), VR6 =
c(NA,
NA, 0L, NA, 0L, NA), VR7 = c(NA, NA, 1L, NA, 0L, NA), VR8 =
c(NA,
NA, 0L, NA, 0L, NA), VR9 = c(NA, NA, 1L, NA, 1L, NA), VR10 =
c(NA,
NA, 1L, NA, 0L, NA), VR11 = c(NA, NA, 0L, NA, 0L, NA), VR12 =
c(NA,
NA, 0L, NA, 0L, NA), VR13 = c(NA, NA, 1L, NA, 0L, NA), VR14 =
c(NA,
NA, 1L, NA, 0L, NA), VR15 = c(NA, NA, 1L, NA, 1L, NA), VR16 =
c(NA,
NA, 0L, NA, 0L, NA), VR17 = c(NA, NA, 1L, NA, 0L, NA), VR18 =
c(NA,
NA, 1L, NA, 1L, NA), VR19 = c(NA, NA, 1L, NA, 0L, NA), VR20 =
c(NA,
NA, 1L, NA, 0L, NA)), row.names = c(NA, 6L), class =
"data.frame")
我正在做很多以前的操作(例如删除列),但我没有找到将简单的行和传递到新列的函数。这是我一直在尝试的
sample <- sample %>% mutate(total = rowSums(1:20))
我一直在网上找
sum(c_across
但 R 无法识别它,尽管加载了 tidyverse 和 dplyr
dplyr
选项会 c_across()
但它需要一个行 ID:
library(dplyr)
#Code
sample %>% mutate(id=1:n())%>%
rowwise(id) %>%
mutate(total=sum(c_across(VR1:VR20),na.rm=T))
输出:
# A tibble: 6 x 22
# Rowwise: id
VR1 VR2 VR3 VR4 VR5 VR6 VR7 VR8 VR9 VR10 VR11 VR12 VR13 VR14 VR15 VR16
<int> <lgl> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
3 1 NA 0 1 1 0 1 0 1 1 0 0 1 1 1 0
4 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
5 0 NA 0 0 1 0 0 0 1 0 0 0 0 0 1 0
6 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
# ... with 6 more variables: VR17 <int>, VR18 <int>, VR19 <int>, VR20 <int>, id <int>, total <int>
使用的数据是您分享的 dput(sample)
。