R:搜索多行&;列以匹配条件列表,然后添加具有二分法结果的新列
问题:具有数十列的超大数据集。如何搜索列列表和其中的所有行,如果它们符合条件,则创建一个新列,向该行添加二分法变量。通常会使用Excel,但大小太大 示例R:搜索多行&;列以匹配条件列表,然后添加具有二分法结果的新列,r,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 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,对于第1行中的j:allrows,ifelse(row=list,col5=1,col5=0),下一步
谢谢 可能是您需要的
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$col5
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