我有一个数据集如下:
ikn arrivaldate LOS
1 06MAR2007 10
1 21FEB2007 1
2 14FEB2007 16
3 15FEB2008 23
3 02MAR2008 5
3 15MAR2008 68
data$arrivaldate <- as.Date(data$arrivaldate, format="%d%m%y")
&#34;到达日期&#34;是一个字符串变量。
我使用as.date将字符串变量转换为日期。但我得到了&#34; NA&#34;作为到达日。我不知道问题所在。
第二,是否有一种方法可以将每个案例数据集的多行转换为每个案例数据集的单行,而不是具有多个到达日期,将arrivaldate1,arrivaldate2,arrivaldate3作为新变量。这些新变量的数量应该是数据集中重复个案的最大数量(我提供的样本数据集中的3个)。
如果有人可以帮我解决这些问题,我感激不尽。
ikn arrivaldate1 LOS1 arrivalsate2 LOS2 arrivaldate3 LOS3
1 06MAR2007 10 21FEB2007 1 NA NA
2 14FEB2007 16 NA NA NA NA
3 15FEB2008 23 02MAR2008 5 15MAR2008 68
答案 0 :(得分:0)
第二个问题的答案是“不优雅”。想一想;您要求的是arrival_date1,arrival_date2,arrival_date3的列。问题:如果一个ikn只有一个到达日期怎么办?那些专栏里有什么?你最多会得到大量的NAs。
取决于你打算对数据做什么(你的例子中不太清楚 - 也许你可以解释一下?)将到达日作为与ikn结合的分类变量可能完全没问题。围绕这种格式构建了许多R库,在最坏的情况下,您可以通过dplyr或data.table之类的东西运行您想要的任何函数/分析。但是,如果不确切地知道自己想要做什么,就很难说出你需要什么(而不是你要求)。
答案 1 :(得分:0)
使用%b%d%Y
格式化日期,然后使用reshape
在添加辅助“id”变量之后获取的宽数据格式。后一部分可以通过我的“splitstackshape”包中的getanID
轻松完成:
library(splitstackshape) ## for getanID
## Format the date
mydf$arrivaldate <- as.Date(mydf$arrivaldate, format="%d%b%Y")
## Reshape
reshape(getanID(mydf, "ikn"), direction = "wide",
idvar = "ikn", timevar = ".id")
# ikn arrivaldate.1 LOS.1 arrivaldate.2 LOS.2 arrivaldate.3 LOS.3
# 1: 1 2007-03-06 10 2007-02-21 1 <NA> NA
# 2: 2 2007-02-14 16 <NA> NA <NA> NA
# 3: 3 2008-02-15 23 2008-03-02 5 2008-03-15 68