使用参与者自己的数据来估算生存分析的数据清除

时间:2016-12-20 21:29:05

标签: r data-cleaning imputation

我正在清理一些数据以进行生存分析,我正在努力使其能够根据给定主题中的周围值来估算丢失的数据。我想使用参与者最接近的先前和最接近的后续值的平均值。如果没有后续值存在,那么我希望使用前一个值,直到后续值存在。

我一直在尝试将问题分解为更小,更易于管理的操作和对象,但是,我不断强迫我使用基于直接在缺失值之上和之下的行的条件格式化的解决方案。坦率地说,我对如何做到这一点感到有点失落。如果你认为你知道我可以使用的好技术,试验,或者你知道我在查找解决方案时可以使用的任何好的搜索术语,我会很喜欢一点指导。

详情如下:

#Fake dataset creation
id <- c(1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4)
time <-c(0,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6)
ss <- c(2,2,4,3,NA,0,0,1,4,0,NA,0,0,0,4,2,1,3,3,2,NA,3,4,3,NA,NA,0,0)
mydat <- data.frame(id, time, ss)

*粗体和带下划线的字符代表上面数据集的变化

这里的目标是找到一种方法来使ID#1(变量ss)的NA值看起来像这样:2,2,4,3, 1.5 ,0,0

ID#2(变量ss)看起来像这样:1,4,0​​, 0 ,0,0,0

ID#3(变量ss)看起来像这样:4,2,1,3,3,2,NA(没有变化,因为带有NA的行最终会被删除)

ID#4(变量ss)看起来像这样:3,4,3, 3 1.5 ,0,0(这个需要多次更改,我认为这是最具挑战性的解决方案)。

1 个答案:

答案 0 :(得分:0)

如果处理速度不是问题(我猜“ID#4”使得很难对插补进行矢量化),那么可以试试:

public class Test {
  interface AnyInterface {}

  public static <T extends AnyInterface> T test1() { return null; }

  public static AnyInterface test2() { return null; }

  public static void main(String[] args) {
    String a = test1(); // ok. WHY?
    String b = test2(); // compile error
  }
}