根据因子(字符串)从R数据框中提取行

时间:2014-02-12 01:21:25

标签: r dataframe

很抱歉,如果这是重复的,但我似乎无法在SO上的任何其他地方找到这些信息,即使它看起来像是一个简单的问题。我有一个数据框,有几列作为因素。其中一些是整数,有些是字符串。我想提取对应于特定因子的行。例如,

my_data <- read.table(file = "my_data.txt", header = TRUE)
my_data[ my_data$age == 20, ]

这样可行,但如果我再尝试

my_data[ my_data$gender == "male", ]

这不会产生任何匹配。我意识到它们不是同一个东西,因为检查my_data$name[1]的类给出了因子,而我正在检查字符串。

我在这里做错了什么想法?

干杯

数据样本:     规模年龄性别价值     1 20男0.5     4 22女0.7     3 14女性0.3

2 个答案:

答案 0 :(得分:8)

尝试使用subset功能。

这个网站提供了一个很好的参考: HowtoInR

my_data = subset(my_data, gender == "male")

答案 1 :(得分:3)

这是一个旧问题的答案,但我想分享我目前的做事方式,这样的错误发生的次数要少得多。

答案是data.table包。它为我节省了数百行代码,并将继续这样做。子集成为小菜一碟:

my_data <- data.table(my_data)
my_data[gender == "male" & age <= 20]

我可以根据需要编写尽可能多的条件,并使用.SD将列作为参数传递给函数,如下所示:

my_data[gender == "male" & age <= 20, lapply(.SD, mean), by = c("nationality", "height")]

从现有列创建列更简单,甚至creating multiple columns at once