【问题标题】:How to convert a character column into date using as.POSIXct?如何使用 as.POSIXct 将字符列转换为日期?
【发布时间】:2019-12-27 12:43:01
【问题描述】:

我有问题。我有一个包含 3 列(date| wd |ws)的数据框(data.in),并且使用 str() 命令给了我列“date”的字符。好的,我说我会使用函数:as.POSIXct(data.in$date, format = "%m/%d/%Y %H:%M" )。它没有给出NA 值,但日期列仍然是字符格式,并且不会转换为日期格式。

data.in <- read.csv(file = "/home/vlad/Documents/vldZ/R_meteo/20130101.csv",
col.names = c("date","hr","ws.80","wd.80"), stringsAsFactors = FALSE)
data.in$data <- paste(data.in$date,data.in$hr) data.in[1:2] <- NULL 

colnames(data.in)[3] <- "date" 
as.Date(data.in$data,format = "%m/%d/%Y ") 
as.POSIXct(data.in$date, format = "%m/%d/%Y %H:%M" ) #### my code 

【问题讨论】:

  • data.in
  • 将数据添加到您的问题中,而不是作为评论。使用dput(head(df,n))
  • 您只需输入as.POSIXct(data.in$date, format = "%m/%d/%Y %H:%M" )data.in$date &lt;- as.POSIXct(data.in$date, format = "%m/%d/%Y %H:%M" )。只有第二个会存储数据
  • 你怎么知道“日期列保持字符格式,不转换为日期格式”?你检查过列的类吗?
  • 感谢 Chelmy88。它适用于美元符号。那存储我的数据。

标签: r date posixct


【解决方案1】:

您可以使用不同的函数来制作时间/日期变量。注意typeof,内存中的数据存储方式)和class对象类):

date1 <- as.Date(
  c("2019-01-01 14:22","2019-01-01 16:08", "2019-01-01 07:16"), 
  format = "%Y-%m-%d %H:%M"
  )
> typeof(date1)
[1] "double"
> class(date1)
[1] "Date"


date2 <- as.POSIXct(
  c("2019-01-01 14:22","2019-01-01 16:08", "2019-01-01 07:16"), 
  format = "%Y-%m-%d %H:%M"
)
> typeof(date2)
[1] "double"
> class(date2)
[1] "POSIXct" "POSIXt" 


date3 <-  strptime(
  c("2019-01-01 14:22","2019-01-01 16:08", "2019-01-01 07:16"), 
  format = "%Y-%m-%d %H:%M"
)
> typeof(date3)
[1] "list"
> class(date3)
[1] "POSIXlt" "POSIXt" 

它们可能显示为双引号" ":

[1] "2019-01-01 14:22:00 +0330" "2019-01-01 16:08:00 +0330"
[3] "2019-01-01 07:16:00 +0330"

但他们没有character 类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多