【发布时间】:2020-12-11 15:34:46
【问题描述】:
考虑以下小标题:
library(tidyverse)
data <- tibble(x = c(rnorm(5,2,n = 10)*1000,NA,1000),
y = c(rnorm(1,1,n = 10)*1000,NA,NA))
假设我想对“x”和“y”进行逐行求和,创建变量“z”,如下所示:
data %>%
rowwise() %>%
mutate(z = sum(c(x,y), na.rm = T))
这对我想要的效果很好,但问题是我的真实数据集有很多变量,而我没有 想在我有什么变量之前检查我没有什么。所以,假设我可能有总和元素中不存在的变量:
data %>%
rowwise() %>%
mutate(k = sum(c(x,y,w), na.rm = T))
在这种情况下,它不会运行,因为列“w”不存在。 我怎样才能让它运行,忽略“w”的不存在并对“x”和“y”求和?
PS:我更喜欢在运行总和之前不过滤数据集。无论变量是否存在,我都想以某种方式使总和发生。
【问题讨论】:
-
您可以使用
across()fromdplyr并设置开始和结束变量! -
在我的情况下,我有一个特定的列表,比如 130 列,我想对总共 300 列求和...但这不是问题,我已经将指定的列表存储在向量。问题是这个列表有我的数据集中不存在的列,我想忽略而不是“清理列表”。
-
也许
res <- df %>% rowwise() %>% mutate(Sum=sum(c_across(yourlistofvariables),na.rm=T))