首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生存分析中的数据清理

生存分析中的数据清理
EN

Stack Overflow用户
提问于 2016-04-19 04:05:43
回答 1查看 334关注 0票数 0

我正在清理一些数据,以便进行生存分析,并且我试图使它成为一个人只有一个,持续的,从症状出现(ss=1)到症状缓解(ss=0)的过渡。个人必须获得完全持续的缓解,才能算为缓解。撇开统计问题/问题不谈,我想知道如何着手解决下面详述的问题。

我一直试图将这个问题分解成更小、更易于管理的操作和对象,然而,我一直来的解决方案迫使我使用基于一个缺失值之上和下面的行的条件格式,坦白地说,对于如何做到这一点,我有点不知所措。如果你认为你知道一个好的技术,我可以使用,试验,或者如果你知道任何好的搜索词,我可以在查找一个解决方案时使用,我想要一个小小的指导。

详情如下:

代码语言:javascript
复制
#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(1,1,1,1,NA,0,0,1,1,0,NA,0,0,0,1,1,1,1,1,1,NA,1,1,0,NA,NA,0,0)
mydat <- data.frame(id, time, ss)

*粗体字符和下划线字符表示对上述数据集的更改。

这里的目标是找到一种方法来获取ID #1 (变量ss)的NA值,如下所示: 1,1,1,1,1,0,0

ID# 2(变量ss)如下所示: 1,1,0,,0,0,0

ID #3 (变量ss)如下所示:1,1,1,1,1,NA (不改变,因为NA的行最终将被删除)

ID #4 (变量ss)如下所示: 1,1,111,0,0 (这一项需要多个更改,我认为这是最具挑战性的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-19 04:51:38

我不认为你真的考虑过所有的“边缘案例”。如何处理两个NA在一段时间结束,或4或5个NA在一个连续。然而,这将在您的小测试用例中为您提供所请求的解决方案,但是,可以使用na.locf-function:

代码语言:javascript
复制
require(zoo)
fillNA <- function(vec) { if ( is.na(tail(vec, 1)) ){ vec } else { vec <- na.locf(vec) }
                         }

> mydat$locf <- with(mydat, ave(ss, id, FUN=fillNA))
> mydat
   id time ss locf
1   1    0  1    1
2   1    1  1    1
3   1    2  1    1
4   1    3  1    1
5   1    4 NA    1
6   1    5  0    0
7   1    6  0    0
8   2    0  1    1
9   2    1  1    1
10  2    2  0    0
11  2    3 NA    0
12  2    4  0    0
13  2    5  0    0
14  2    6  0    0
15  3    0  1    1
16  3    1  1    1
17  3    2  1    1
18  3    3  1    1
19  3    4  1    1
20  3    5  1    1
21  3    6 NA   NA
22  4    0  1    1
23  4    1  1    1
24  4    2  0    0
25  4    3 NA    0
26  4    4 NA    0
27  4    5  0    0
28  4    6  0    0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36708353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档