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)