将字符数据转换为日期-COVID 19研究

时间:2020-05-15 17:15:41

标签: r date

需要帮助将字符数据转换为日期:

时间/日期如下:4/10/20 17:36

我需要将列从字符转换为日期,以便按日期对列进行排序。我的数据框为o2outcomes,列为transfusion_date

我尝试过:

  1. o2outcomes$transfusion_date <- as.Date(c("2007-06-22", "2004-02-13"))

  2. o2outcomes$transfusion_date <- as.Date(o2outcomes$transfusion_date , "%m/%d/%Y %H%M")

  3. 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")

为了按日期排列数据,我尝试过:

  1. o2outcomes$V8 <- lubridate::dmy(o2outcomes$transfusion_date) dplyr::arrange(o2outcomes$transfusion_date)

  2. o2outcomes[order(as.Date(o2outcomes$transfusion_date, format="%d/%m/%Y")),]

  3. 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,但我的任务是创建这些数据。因此,在此先感谢。

凯特

3 个答案:

答案 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),]

按日期对数据进行排序

以上两个答案的组合有效。谢谢你们