【发布时间】:2023-04-05 21:33:01
【问题描述】:
我正在使用关于个人的纵向数据库(注册数据非常大)研究 R,每个 ID 有几行(在数据库中名为“vn”),它们的属性列在列中。我的变量“观察”表示每年的观察。有时(但并非在所有情况下)跳过一年或多年,因为个人没有任何变化。我想将那些“缺失的行”添加到我的数据库中,以便每个人在他们的第一次和最后一次观察之间每年都有一个条目(这对每个人来说都不一定相同)。由于个人的属性会随时间而变化,因此添加的行必须包含与前一个相同的属性值(对于下面的示例,如果为 2010 年添加一行,则个人在 maritalstatus 中的值为 3,在自治市中的值为 5584) .
这是我数据库中个人的概述:
structure(list(vn = c("555", "555", "555", "555", "555", "555", "555", "555", "555", "555", "555"), municipality = c(5586, 5586, 5586, 5586, 5586, 5586, 5611, 5611, 5584, 5584, 5584), yearofbirth = c(1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957), sex = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), maritalstatus = c(2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), observation = c(2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012)), row.names = 470:480, class = "data.frame")
我当前的代码(如下)在缺少观察年份时向我的数据集添加行,保留前一行的所有信息,除了现在,一些信息加倍,一些观察年份出现两次。
test<-test %>% expand(vn, municipality, yearofbirth, sex, maritalstatus, full_seq(observation,1))
我也在考虑使用rep(),但找不到一种方法来做我想做的事。
有没有人想出一个可以帮助我的代码?
【问题讨论】:
-
您能否给我们提供
dput(head(vn))的数据样本,以便其他人可以在他们的系统上重现您的情况?请确保样本中至少有一个观察值缺少行。如果没有,请将n参数添加到head,以确保您获得更大的样本。
标签: r date sequence rows survival-analysis