很抱歉,如果这是重复的,但我似乎无法在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
答案 0 :(得分:8)
答案 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