如何以特定顺序从多个列中提取值

时间:2018-12-04 19:29:41

标签: r

我有这个数据集,其中包含前三年的变量。

data <- read.table(text="
 a        2015  2016  2017  
 1        100    100   100
 2        1000    5    NA
 3       10000    NA   NA", header=TRUE)

我想在我的数据中创建一个新列,其中包含最近一年的值。顺序是2017-> 2016-> 2015。

output <- read.table(text="
 a        2015  2016  2017  recent
 1        100    100   100   100
 2        1000    5    NA     5
 3       10000    NA   NA     10000", header=TRUE)

我知道我可以使用“ if”命令来实现它,但是我想知道是否有一种快速简单的方法来实现它。 谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个简单的基础R解决方案。假设年份是从左到右排序的。

data$recent <- apply(data, 1, function(x) tail(na.omit(x), 1))

  a X2015 X2016 X2017 recent
1 1   100   100   100    100
2 2  1000     5    NA      5
3 3 10000    NA    NA  10000