【问题标题】:Select rows that have a particular string in column A but not in column X, Y, or Z in R选择在 A 列中具有特定字符串但在 R 中的 X、Y 或 Z 列中没有特定字符串的行
【发布时间】:2024-01-15 17:41:01
【问题描述】:

我有一个数据框,我想根据两个条件对其进行子集化。第一个是我想在第 5 列中选择具有字符串“A”的行。第二个是我想确保这些行在第 6 到 50 列中没有字符串“Y”。

我可以轻松选择第一个条件,但第二个条件有问题。

# example input (data)

1 2 3 4 5 6 7 8 9 ETC TO 50
X X X X A Z Z Z Z 
X X X X A A Z Z Z
X X X X A Z Y Y Z
X X X X B X A Z Z
X X X X A Z Y B X

# example output (data2)

1 2 3 4 5 6 7 8 9 ETC TO 50
X X X X A Z Z Z Z 
X X X X A A Z Z Z

# code I have tried

data2 <- data[data$`5` == "A" & data[,6:50] != "Y", ]

【问题讨论】:

  • data[data$`5` == 'A' &amp; !rowSums(data[,6:50]=='Y'),]
  • 您能否提供代码来制作可重现的示例数据集

标签: r filter subset


【解决方案1】:

使用dplyr,你可以使用filter

library(dplyr)

data %>% filter(`5` == "A") %>% filter_at(6:50, all_vars(. != "Y"))

或者在基础 R 中:

data[data$`5` == "A" & rowSums(data[6:50] == "Y") == 0, ]

【讨论】:

    最近更新 更多