【问题标题】:check rowwise if value in one column is present in multiple other columns R如果一列中的值存在于多个其他列中,则按行检查 R
【发布时间】:2022-09-26 13:56:49
【问题描述】:

大脑卡住了。我需要找到一种方法来在同一行内的多个其他列中查找一个列的逐行值。比如... 50 或 60。在下面的示例中,“是 B 或 C 中的 A 的行值吗?\”但使用实际数据中的列位置,而不是列名,因为有太多。我知道 case_when 会成功,但要测试的列又太多了。

例子:

df1 <- data.frame(A = c(4, 6,3), 
                  B = c(4, 1, 1), 
                  C = c(1, 1, 3))

我用 map() 尝试了这个,但它似乎在第 3 列中查找数字 4:59 的任何实例,而不是在第 4 列到第 59 列中。

nums <- c(4:59)
cols <- c(3)

wL$Check_Median <-
  wL[, cols] %>%
  map(~.x %in% nums) %>%
  reduce(`|`)

我想象它会起作用,使用 4:59 而不是命名列,如下所示:

nums <- c(B:C)
cols <- c(A)

wL$D <-
  wL[, cols] %>%
  map(~.x %in% nums) %>%
  reduce(`|`)

结果将是:

df2 <- data.frame(A = c(4, 6,3), 
                  B = c(4, 1, 1), 
                  C = c(1, 1, 3),
                  D = c(TRUE, FALSE, TRUE))

    标签: r


    【解决方案1】:

    这是一个解决方案:

    wL$D <- Reduce(`|`, lapply(wL[28:52], `==`, wL[,13]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      相关资源
      最近更新 更多