当前位置:  开发笔记 > 编程语言 > 正文

R:基于先前非NA行中的值分配先前的非NA值"n"次

如何解决《R:基于先前非NA行中的值分配先前的非NA值"n"次》经验,为你挑选了1个好方法。



1> David Arenbu..:

这是尝试使用data.table.分组方法是在@jeremys的答案,虽然我正在避免ifelselapply在这里,而是将根据第一个income值复制的第一个income值与NAs值复制.N - (cutoff[1L] + 1L)时间相结合.我也是第一次使用这些值cutoff > 0L)

library(data.table)
setDT(test_case)[which.max(cutoff > 0L):.N, # Or `cutoff > 0L | is.na(income)`
                 income := c(rep(income[1L], cutoff[1L] + 1L), rep(NA, .N - (cutoff[1L] + 1L))), 
                 by = cumsum(cutoff != 0L)]
test_case
#     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

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有