【发布时间】:2016-03-12 16:29:35
【问题描述】:
我有一个数据框test_case。我的列中缺少数据 (income)。
test_case <- data.frame(
person=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3),
year=c(2010, 2011, 2012, 2010, 2011, 2012, 2010, 2011, 2013, 2014, 2014, 2014),
income=c(4, 10, 13, NA, NA, NA, 13, NA, NA, NA, NA, NA),
cutoff=c(0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0)
)
变量cutoff 指定我想将收入中的值“结转”到后续行的次数(使用包 zoo 中的 na.locf() 方法)。例如,在上面的数据框中,cutoff 的值 2 表示应该将收入结转两次。
我在 SO 上看到了有关指定如何使用 na.locf 来结转 n 次的示例当 n 为常数时。但在我的情况下,我在概括 (R -- Carry last observation forward n times) 时遇到了问题n 在变化。
这是我的原始数据框:
person year income cutoff
1 1 2010 4 0
2 1 2011 10 0
3 1 2012 13 2
4 2 2010 NA 0
5 2 2011 NA 0
6 2 2012 NA 0
7 3 2010 13 3
8 3 2011 NA 0
9 3 2013 NA 0
10 3 2014 NA 0
11 3 2014 NA 0
12 3 2014 NA 0
这是所需的输出:
person year income cutoff
1 1 2010 4 0
2 1 2011 10 0
3 1 2012 13 2
4 2 2010 13 0
5 2 2011 13 0
6 2 2012 NA 0
7 3 2010 13 3
8 3 2011 13 0
9 3 2013 13 0
10 3 2014 13 0
11 3 2014 NA 0
12 3 2014 NA 0
【问题讨论】:
-
如果第 1 个人和第 2 个人是不同的人,为什么要将第 1 个人 2012 年的收入结转到第 2 个人 2010 年的收入?
标签: r time-series zoo