如何通过R中的ID获得年龄?

时间:2016-10-31 22:46:11

标签: r

数据

ID,Age,Gender
100,69,male
101,75,female
102,84,female
103,,male
104,66,female

代码

DF <- read.csv("/home/masi/data.csv", header = T)
ids <- c(101,103)
ages <- DF[which(ids), ]$Age

输出

Error in which(ids) : argument to 'which' is not logical
Calls: makeMatrixPlot -> [ -> [.data.frame -> which
Execution halted

您可以执行DF[which(gender, ]$ID,但为什么不Age

其他提案

% http://stackoverflow.com/q/40365526/54964
DF[DF$ID %in% ids,"Age"]

with(DF[DF$ID %in% ids,],Age) 
操作系统:Debian 8.5
R:3.1.1

1 个答案:

答案 0 :(得分:1)

使用which()这样的子集不是一个好主意。将subset()函数与%in%运算符一起使用,以测试向量中的成员资格。

ages <- subset(DF, ID %in% ids)$Age

或使用match函数进行子集化

ages <- DF[match(ids, DF$ID),"Age"]