从数据框中选择具有特定元素名称的行

问题描述 投票:0回答:1

我有一个包含超过 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 个列名称的情况下对具有特定元素名称的行进行子集化或选择?

提前非常感谢您的帮助。

r function subset
1个回答
0
投票

这是使用 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
© www.soinside.com 2019 - 2024. All rights reserved.