【发布时间】:2019-02-01 01:08:04
【问题描述】:
我正在对长格式数据进行纵向分析。我在 2005 年、2009 年和 2013 年测量了我的个性(O、C、E、A、N),并每年测量我的因变量(工作满意度)。每个人都有自己的身份证。我有两个目标(我认为可能可以通过相同的基本逻辑来实现):
1) 我需要另一个变量(列)来指示每个人的性格测量的第一年。如果从未测量过个性,则返回 NA。例如,如果个性是在 2009 年首次测量的,则需要在该列中为该 ID 的每一行返回“2009”。
2)我需要另一个变量(列)来复制每个 ID 每年的个性项目响应,除非它被后来的测量年份(即 2009 年、2013 年)替换。例如,如果一个 ID 在 2005 年和 2009 年完成了性格测试,那么我需要将他们 2005 年的回答复制到 2006 年、2007 年和 2008 年,而不是 2009 年,因为以后的条目(如果存在)应该成为被复制的内容展望未来。
我曾尝试为这些创建一个函数,但最终失败了。
我希望这是有道理的。以下100个案例摘录:
structure(list(Person_ID = c(100003L, 100003L, 100003L, 100003L,
100003L, 100003L, 100003L, 100003L, 100003L, 100003L, 100005L,
100005L, 100005L, 100005L, 100005L, 100005L, 100005L, 100005L,
100005L, 100006L, 100006L, 100006L, 100006L, 100006L, 100006L,
100006L, 100006L, 100007L, 100007L, 100007L, 100007L, 100007L,
100008L, 100008L, 100008L, 100009L, 100009L, 100010L, 100010L,
100010L, 100010L, 100010L, 100010L, 100010L, 100010L, 100010L,
100010L, 100011L, 100011L, 100011L, 100011L, 100011L, 100014L,
100014L, 100014L, 100014L, 100014L, 100014L, 100014L, 100014L,
100014L, 100014L, 100015L, 100015L, 100015L, 100015L, 100015L,
100015L, 100015L, 100015L, 100015L, 100015L, 100016L, 100016L,
100016L, 100016L, 100016L, 100016L, 100016L, 100016L, 100016L,
100016L, 100018L, 100018L, 100018L, 100018L, 100018L, 100018L,
100018L, 100018L, 100018L, 100018L, 100019L, 100019L, 100019L,
100019L, 100019L, 100019L, 100019L, 100019L), Job_Satisfaction = c(0L,
NA, 7L, NA, 8L, 10L, NA, NA, NA, NA, 9L, NA, NA, NA, NA, NA,
NA, NA, NA, 6L, 10L, 8L, 9L, 7L, NA, 9L, 3L, NA, 10L, NA, NA,
NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, 5L, 4L, 8L, 5L, 5L,
NA, NA, NA, 8L, NA, 8L, 6L, 8L, 7L, 7L, NA, NA, NA, NA, NA, 10L,
9L, 9L, 9L, 10L, 8L, 10L, 9L, 8L, 9L, 7L, 9L, 9L, 8L, 8L, 9L,
9L, 9L, 8L, 9L, NA, 7L, 7L, 8L, 7L, 8L, 7L, 7L, 8L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 8L), Year = c(2005L, 2006L, 2007L, 2008L,
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2005L, 2007L, 2008L,
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2005L, 2008L, 2009L,
2010L, 2011L, 2012L, 2013L, 2014L, 2008L, 2009L, 2010L, 2011L,
2012L, 2005L, 2006L, 2007L, 2006L, 2007L, 2005L, 2006L, 2007L,
2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2005L, 2006L,
2007L, 2008L, 2009L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L,
2011L, 2012L, 2013L, 2014L, 2005L, 2006L, 2007L, 2008L, 2009L,
2010L, 2011L, 2012L, 2013L, 2014L, 2005L, 2006L, 2007L, 2008L,
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2005L, 2006L, 2007L,
2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2005L, 2006L,
2007L, 2008L, 2009L, 2010L, 2011L, 2012L), O = c(5, NA, NA, NA,
5.5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
4.83333333333333, NA, 4.16666666666667, NA, NA, NA, 3.5, NA,
NA, NA, NA, NA, NA, 3.83333333333333, NA, NA, NA, NA, 5, NA,
NA, NA, 5.16666666666667, NA, NA, NA, 5, NA, 6, NA, NA, NA, NA,
5.5, NA, NA, NA, 5.16666666666667, NA, NA, NA, 5, NA, 4.5, NA,
NA, NA, 4.33333333333333, NA, NA, NA, 4, NA, 3, NA, NA, NA, 3.16666666666667,
NA, NA, NA, 3.16666666666667, NA, 5.5, NA, NA, NA, 5.66666666666667,
NA, NA, NA, 5.33333333333333, NA, 5.5, NA, NA, NA, 5, NA, NA,
NA), C = c(4.66666666666667, NA, NA, NA, 6.83333333333333, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4.33333333333333,
NA, 4.16666666666667, NA, NA, NA, 4.33333333333333, NA, NA, NA,
NA, NA, NA, 5.83333333333333, NA, NA, NA, NA, 5.66666666666667,
NA, NA, NA, 6.66666666666667, NA, NA, NA, 6.66666666666667, NA,
6.33333333333333, NA, NA, NA, NA, 5.83333333333333, NA, NA, NA,
6, NA, NA, NA, 6, NA, 6.66666666666667, NA, NA, NA, 6.5, NA,
NA, NA, 6.5, NA, 5.5, NA, NA, NA, 5.83333333333333, NA, NA, NA,
5.16666666666667, NA, 5.5, NA, NA, NA, 5.66666666666667, NA,
NA, NA, 5.16666666666667, NA, 5.66666666666667, NA, NA, NA, 6,
NA, NA, NA), E = c(4.33333333333333, NA, NA, NA, 5.16666666666667,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4.66666666666667,
NA, 4.33333333333333, NA, NA, NA, 3.83333333333333, NA, NA, NA,
NA, NA, NA, 4.33333333333333, NA, NA, NA, NA, 5.5, NA, NA, NA,
5.16666666666667, NA, NA, NA, 5.33333333333333, NA, 6.16666666666667,
NA, NA, NA, NA, 5.83333333333333, NA, NA, NA, 4.83333333333333,
NA, NA, NA, 4.5, NA, 4.33333333333333, NA, NA, NA, 4.66666666666667,
NA, NA, NA, 3.83333333333333, NA, 3.5, NA, NA, NA, 3.5, NA, NA,
NA, 5.16666666666667, NA, 2, NA, NA, NA, 3.16666666666667, NA,
NA, NA, 2.66666666666667, NA, 2.33333333333333, NA, NA, NA, 2.5,
NA, NA, NA), A = c(6.75, NA, NA, NA, 7, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 5.75, NA, 4.75, NA, NA, NA, 5,
NA, NA, NA, NA, NA, NA, 5.5, NA, NA, NA, NA, 5, NA, NA, NA, 4.75,
NA, NA, NA, 5, NA, 5.25, NA, NA, NA, NA, 5.5, NA, NA, NA, 5,
NA, NA, NA, 5.5, NA, 6.75, NA, NA, NA, 5.75, NA, NA, NA, 6.75,
NA, 5, NA, NA, NA, 3.5, NA, NA, NA, 4.75, NA, 5.75, NA, NA, NA,
5.75, NA, NA, NA, 5.5, NA, 5.75, NA, NA, NA, 5.75, NA, NA, NA
), N = c(3.16666666666667, NA, NA, NA, 3.33333333333333, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 3.66666666666667,
NA, 4.5, NA, NA, NA, 4.16666666666667, NA, NA, NA, NA, NA, NA,
2.66666666666667, NA, NA, NA, NA, 2.66666666666667, NA, NA, NA,
2.33333333333333, NA, NA, NA, 3.16666666666667, NA, 1.83333333333333,
NA, NA, NA, NA, 1.33333333333333, NA, NA, NA, 2.83333333333333,
NA, NA, NA, 1.83333333333333, NA, 3.83333333333333, NA, NA, NA,
3, NA, NA, NA, 3.33333333333333, NA, 1.66666666666667, NA, NA,
NA, 2.5, NA, NA, NA, 2.5, NA, 3.83333333333333, NA, NA, NA, 3.33333333333333,
NA, NA, NA, 4.16666666666667, NA, 3.83333333333333, NA, NA, NA,
4.5, NA, NA, NA)), .Names = c("Person_ID", "Job_Satisfaction",
"Year", "O", "C", "E", "A", "N"), row.names = c(NA, 100L), class = "data.frame")
【问题讨论】:
标签: r