我怎样才能像#34; 15/09/2016 20h26"?
我在strptime官方手册上搜索了这个并且堆栈溢出,但我找不到任何可以帮助我的东西。
我试过这段代码:
u <- ("15/09/2016 20h26")
strptime(u, format = "%d/%m/%Y %H:%M")
和
strptime(u, format = "%d/%m/%Y %H'h'%M")
任何人都知道我需要做什么?
编辑:
首先,对于问题的清晰性感到抱歉。
我试图用一个样本来描述我的问题,但这似乎是一个错字。
我有一个txt文件,其中有400个时间观察格式&#34; 20/01/2016 14h00&#34;。我试图用strptime将其转换为日期:
这是我的代码:
y <- read.table('materias_data.txt', sep = ";")
l <- strptime(y, format = "%d/%m/%Y %Hh%M")
运行代码时出现此错误:
strptime错误(y,格式=&#34;%d /%m /%Y%Hh%M&#34;):输入字符串是 太久了
如何正确转换data.frame?
编辑2:解决方案
阅读评论我意识到问题所在:
strptime并不适用于data.frame,但它适用于角色。
解决此问题的步骤是
y <- read.table('materias_data.txt', sep = ";")
l <- strptime(y[,1], format = "%d/%m/%Y %Hh%M")
df <- data.frame(l)
谢谢
答案 0 :(得分:2)
我添加到ATA_PASS_THROUGH_EX的相对较新的anytime软件包会在没有额外帮助的情况下自动解析:
R> anytime("15/09/2016 20h26")
[1] "2016-09-15 20:26:00 CDT"
R>
另一个不错的功能是它还会自动从factor
(或ordered
)转换为character
。
因此,如果您有一个data.frame df
,其中包含一列这样的值,比如名为datestr
的列,那么只需传递一列:
R> anytime( df[, "datestr"] )
您也可以将其分配给data.frame中的新列:
R> df[, "parsedtime"] <- anytime( df[, "datestr"] )
答案 1 :(得分:0)
使用dplyr
&#39; mutate
来应用转换数据。框架方式,或使用其中一个应用函数:
y <- y %>% mutate(col_name = as.POSIXct(col_name, format = "%d/%m/%Y %Hh%M"))
# or
parsed <- sapply(y$col_name, strptime, format = "%d/%m/%Y %Hh%M")