如何按行中的值过滤表

时间:2014-02-17 06:26:49

标签: r matrix

我正在r中创建一个加载csv文件中某些数据的脚本。所以我使用这些功能来加载我的数据

data <- read.csv("info.csv",colClasses = "character")

我的数据看起来像这些

a   b   c   d   ...
1   "A"   3   4   ...
5   "B"   7   8   ...
9   "C"   7   4   ...
9   "C"   2   5   ...
9   "A"   1   6   ...

如何只过滤包含“C”或“A”或两者或任何其他字符串的行?

3 个答案:

答案 0 :(得分:2)

如果数据是data.frame,则可以

data[data$b == "C",] 

在B列中获取包含C的所有行

答案 1 :(得分:2)

仅限A,您可以尝试:

data.Aonly <- data[data$b == "A", ]

或使用subset()命令:

data.Aonly <- subset(data, b == "A")

对于A或C,您可以使用%in%运算符: data.AC <- data[data$b %in% c("A", "C"), ],或 data.AC <- subset(data, b %in% c("A", "C"))

答案 2 :(得分:2)

dplyr包中,我们采用以下形式:

data %.% filter(b == "A")   ## OR...
filter(data, b == "A")

所以这里是一个真实的数据集。但是dplyr更多的是与性能相关的任务。如果您真正想要的是从一个小数据集中获取一些行,那么这可能不是最佳答案。

library(dplyr)
filter(mtcars, gear == 4) # OR...
tbl_df(mtcars) %.% filter(gear == 4)
tbl_df(mtcars) %.% filter(gear == 3)
tbl_df(mtcars) %.% filter(gear %in% 3:4)