R 行求和误差
我有“宽格式”数据,开始于:R 行求和误差,r,R,我有“宽格式”数据,开始于: id var_1 var_2 var_3... 1 NaN 0 1 2 2 NaN 3 3 1 4 NaN . . . 整个数据集由数千个观测值和数百个变量组成。我正在尝试筛选在var_1到var_12中任何一个值正好为1的观测值 我的尝试 library(package = dplyr) data <- data %>% mutate(my_obs = select(var_1:var_12) %&
id var_1 var_2 var_3...
1 NaN 0 1
2 2 NaN 3
3 1 4 NaN
.
.
.
整个数据集由数千个观测值和数百个变量组成。我正在尝试筛选在var_1到var_12中任何一个值正好为1的观测值
我的尝试
library(package = dplyr)
data <- data %>%
mutate(my_obs = select(var_1:var_12) %>%
apply(MARGIN = 1,
FUN = function(x) any(x == 1,
na.rm = TRUE)) == TRUE) %>%
filter(my_obs == 1)
我们可以在
mutate
调用中使用rowSums
data %>%
mutate(special_sum = rowSums(.[grep("var_\\d+", names(.))], na.rm = TRUE)) %>%
filter(special_sum >=1)
如果我们不想创建特殊总和
,那么这也可以在过滤器中完成
data %>%
filter(rowSums(.[grep("var_\\d+", names(.))], na.rm = TRUE)>=1)
您希望在任何变量中包含值1的行还是在12个变量中包含值1的行?@shayaa在任何变量中包含值1的行您可能希望应用(数据[,1:12],1,函数(x)any(x==1))
data %>%
filter(rowSums(.[grep("var_\\d+", names(.))], na.rm = TRUE)>=1)