首页 > 解决方案 > 从 data.frame 中的特定列返回值

问题描述

我有data.frame14 列,由 13 个时间段的测试分数组成,全部为数字。最后一列,比如 X,表示每个学生(行)成绩不及格的具体时间点。我想创建一个单独的列,其中包含每个学生在特定不及格时间点的不及格考试成绩。

      dataframe<-data.frame(TestA=c(58,92,65,44,88), 
      TestB=c(17,22,58,46,98), 
      TestC=c(88,98,2,45,80), TestD=c(33,25,65,66,5), 
      TestE=c(98,100,100,100,100), X=c(2,2,3,NA,4))

以上是带有模拟数据的压缩版本。第一个学生在第二个时间点不及格,以此类推,但第四个学生从未失败。结果列应该是 17,2 2, 2, NA, 5。我怎样才能做到这一点?

标签: rfunctionconditional

解决方案


你可以试试

dataframe[cbind(1:nrow(dataframe), dataframe$X)]
#[1] 17 22  2 NA  5

?`[`

第三种索引形式是通过一个数字矩阵,每个维度有一列:索引矩阵的每一行然后选择数组的单个元素,结果是一个向量。索引矩阵中不允许有负索引。NA 和零值是允许的:索引矩阵中包含零的行被忽略,而包含 NA 的行在结果中产生 NA。


推荐阅读