我有一个包含超过 100 个列的数据框,我想知道如何对具有特定元素名称的行进行子集化或选择,而无需在子集函数中写入所有 100 个列名称。
#示例数据框
data <- data.frame(x1 = 1:5,
x2 = c("ab", "9", "bc", 6, 7),
x3 = c(8, "ab", 10, "cd", "ef"),
x4 = c(11, 12, "ij", "gh", "ab"))
data
#x1 x2 x3 x4
#1 1 ab 8 11
#2 2 9 ab 12
#3 3 bc 10 ij
#4 4 6 cd gh
#5 5 7 ef ab`
#Select rows that have the element name "ab".
subset(data, x1 == "ab" | x2 == "ab" | x3 == "ab" | x4 == "ab")
#x1 x2 x3 x4
#1 1 ab 8 11
#2 2 9 ab 12
#5 5 7 ef ab
如何在子集函数中不写入所有 100 个列名称的情况下对具有特定元素名称的行进行子集化或选择?
提前非常感谢您的帮助。
这是使用 colSums 或 rowSums 来使用过滤列的一种方法
data <- data.frame(x1 = 1:5,
x2 = c("ab", "9", "bc", 6, 7),
x3 = c(8, "ab", 10, "cd", "ef"),
x4 = c(11, 12, "ij", "gh", "ab"))
data[rowSums(data == 'ab') > 0,]
输出:
x1 x2 x3 x4
1 1 ab 8 11
2 2 9 ab 12
5 5 7 ef ab