R:搜索多行和多列以匹配条件列表,然后添加具有二分类结果的新列



问题:包含数十列的超大数据集。如何搜索列列表及其中的所有行,如果它们符合条件,请创建一个向行添加二分类变量的新列。通常会使用Excel,但尺寸太大。

col1 col2 col3 col4
1 2 3 4
1 2 5 6
3 3 3 3
1 1 1 2
2 3 4 1

如果这些列中的任何一列 (col1-4) 和其中的任何行与数字列表匹配,例如 List:1、2、3,然后添加新的列 (col5),如果匹配,则添加 1,如果不匹配,则添加 0。 重复无关紧要 - 如果出现一个或多个列表条件,则返回的值为 1

潜在的解决方案理念对于 col1:col4 中的 i,对于 row1:allrows 中的 j,ifelse(row=list, col5=1, col5=0),next。

谢谢!

也许你需要

df$col5 <- (apply(df, 1, function(x) 
            !any(!table(factor(x[x %in% v1], levels=v1)))))+0L
 df
 #  col1 col2 col3 col4 col5
 #1    1    2    3    4    1
 #2    1    2    5    6    0
 #3    3    3    3    3    0
 #4    1    1    1    2    0
 #5    2    3    4    1    1

数据

df <- structure(list(col1 = c(1L, 1L, 3L, 1L, 2L), col2 = c(2L, 2L, 
3L, 1L, 3L), col3 = c(3L, 5L, 3L, 1L, 4L), col4 = c(4L, 6L, 3L, 
2L, 1L)), .Names = c("col1", "col2", "col3", "col4"), class = 
 "data.frame", row.names = c(NA, -5L))
 v1 <- 1:3

最新更新