r-将嵌套在人员中的年度ID数据重新标记为时间点(枚举时间点)



我有一个纵向数据,受访者被招募为队列。现在,我有他们进行调查的年份。但我想创建一个新的专栏,简单地计算一个人是第一次、第二次还是第三次参加调查。

原始表格

>>>td style="text-align:centre;">4
PersonID SurveyYear SurveyQ1Rating
12 2013 4f
12 2012 4f
12 2010 3 f
2 2007m
2 2008 3 3 m
2009年 3年 2010年 5年 5 2014 5 f

base解决方案:

df |>
transform(SurveyTime = ave(SurveyYear, PersonID, FUN = rank))

dplyr等价物:

library(dplyr)
df %>%
group_by(PersonID) %>%
mutate(SurveyTime = dense_rank(SurveyYear)) %>%
ungroup()

数据
df <- structure(list(PersonID = c(12L, 12L, 12L, 2L, 2L, 2L, 2L, 2L, 
5L, 5L), SurveyYear = c(2013L, 2012L, 2010L, 2007L, 2008L, 2009L, 
2010L, 2013L, 2013L, 2014L), SurveyQ1Rating = c(5L, 4L, 3L, 4L, 
3L, 3L, 5L, 2L, 4L, 5L), SurveyQ2Rating = c(4L, 4L, 3L, 4L, 3L, 
5L, 5L, 2L, 4L, 5L), Gender = c("f", "f", "f", "m", "m", "m", 
"m", "m", "f", "f")), class = "data.frame", row.names = c(NA, -10L))

使用data.table

library(data.table)
setDT(df1)[, SurveyTime := frank(SurveyYear), PersonID]

相关内容

  • 没有找到相关文章

最新更新