需要帮助将字符数据转换为日期:
时间/日期如下:4/10/20 17:36
我需要将列从字符转换为日期,以便按日期对列进行排序。我的数据框为o2outcomes
,列为transfusion_date
我尝试过:
o2outcomes$transfusion_date <- as.Date(c("2007-06-22", "2004-02-13"))
o2outcomes$transfusion_date <- as.Date(o2outcomes$transfusion_date , "%m/%d/%Y %H%M")
o2outcomes <- data.frame(Date = c("10/9/2009 0:00:00", "10/15/2009 0:00:00"))
as.Date(o2outcomes$transfusion_date, "%m/%d/%Y %H:%M")
为了按日期排列数据,我尝试过:
o2outcomes$V8 <- lubridate::dmy(o2outcomes$transfusion_date)
dplyr::arrange(o2outcomes$transfusion_date)
o2outcomes[order(as.Date(o2outcomes$transfusion_date, format="%d/%m/%Y")),]
test <- "2013-12-25T04:32:16.500-08:00
z <- as.POSIXct(test,format="%Y-%m-%dT%H:%M:%OS")
op <- options(digits.secs = 3)
z
'test <- "2013-12-25 04:32:16.5 CST"
as.POSIXct(test)
4。
o2outcomes$V8 <- lubridate::dmy(o2outcomes$transfusion_date)
dplyr::arrange(o2outcomes$transfusion_date)
5。
o2outcomes[order(as.Date(o2outcomes$transfusion_date, format="%d/%m/%Y")),]
这是一项对时间敏感的COVID研究(全国首次进行血浆疗法!),尽管我以前从未使用过R,但我的任务是创建这些数据。因此,在此先感谢。
凯特
答案 0 :(得分:4)
让我们组成一些数据。因为您已经有数据,所以您不需要这样做。我想您可能会有更多的列,这不是问题。
o2outcomes <- data.frame(transfusion_date= c("4/10/20 17:36", "4/10/20 17:33", "4/11/20 17:36"),
other = letters[1:3])
它是这样的:
transfusion_date other
1 4/10/20 17:36 a
2 4/10/20 17:33 b
3 4/11/20 17:36 c
现在解析日期,然后按时间排序数据集:
library(lubridate)
# parse date
o2outcomes$transfusion_date <- parse_date_time(o2outcomes$transfusion_date,
orders = "%m/%d/%y %H%M")
# sort
o2outcomes <- o2outcomes[order(o2outcomes$transfusion_date),]
o2outcomes
transfusion_date other
2 2020-04-10 17:33:00 b
1 2020-04-10 17:36:00 a
3 2020-04-11 17:36:00 c
答案 1 :(得分:2)
@desval的答案很好。日期时间转换部分也可以使用基数R中的strptime()
完成:
o2outcomes <- transform(o2outcomes,
td = strptime(transfusion_date, format="%m/%d/%y %H:%M")
)
或者,如果将两位数的年份转换为四位数的年份,则anytime
包可以处理它:
o2outcomes <- transform(o2outcomes,
td = anytime::anytime(gsub("/20 ","/2020 ",transfusion_date))
)
(在这种情况下,我使用的是新的变量名,而不是替换原始的变量名,但是您可以做任何最有效的事情)。
答案 2 :(得分:0)
o2结果<-变换(o2结果, td = anytime :: anytime(gsub(“ / 20”,“ / 2020”,transfusion_date)) )
o2结果<-o2结果[order(o2outcomes $ transfusion_date),]
以上两个答案的组合有效。谢谢你们