抱歉,我是一个相对初学者,希望通过dplyr技术实现更多功能。我有一个包含id列、end列(日期格式为POSIXct)和D列(编码了大约6种不同类型结果)的大型数据框,示例如下:
id end D
1143 1996-08-10 KT
1148 2000-07-27 KT
1150 2004-07-02 KT
1158 2001-11-03 KT
我希望创建一个关于KT结果的子集。在这个结果范围内,许多id都有1-4个不同日期的结果。我需要创建一个宽数据框,看起来像这样:
id datetx1 datetx2 datetx3 datetx4
1915 2014-10-13 2014-10-18 <NA> <NA>
2715 2006-09-17 2006-09-17 2006-09-17 2008-02-01
5089 2007-02-02 2007-02-11 <NA> <NA>
5266 2007-04-16 2010-07-14 2010-07-14 <NA>
我一直在试着使用dplyr和tidyr来进行长宽转换,虽然这种方法有些成功,但在处理日期时遇到了困难:
transplant<-filter(outcomes, D == "KT") %>%
filter(!is.na(date)) %>%
group_by(id) %>%
arrange((end)) %>%
mutate(number = row_number()) %>%
spread(number, date)
问题出在spread函数上,它会在其他列中创建数值型的值,我无法将其转换为日期格式。我只能将日期先转换为字符型,然后在使用spread后再转换为日期格式。这种方法虽然可行,但是我是否遗漏了tidyr和日期编码方面的知识?
spread
应该有一个默认值为 FALSE 的convert
参数。尝试使用convert = TRUE
? - npjcdate
作为列。 - user295691