> Sys.Date()
[1] "2018-09-10"
> Sys.timezone()
[1] "Asia/Jakarta"
> library(readr)
> CDR_20180820111 <- read_delim("projects/R/CDR/CDR_20180820111.txt",
+ "|", escape_double = FALSE, col_types = cols(A_IMEI = col_character(),
+ A_IMSI = col_character(), A_P_NUM = col_character(),
+ B_IMSI = col_character(), B_P_NUM = col_character(),
+ CLSTR_ID = col_character(), DRTN = col_character(),
+ INTCCT_ID = col_character(), STRT_DTTM = col_double()),
+ trim_ws = TRUE)
R建议并已将值设为双格式(2.018082e+13
),而不是YYYY-MM-DD
的格式为Sys.Date()
。
这是将col_double()
格式更改为col_character()
时的结果
20180820173410
,预期为YYYY-MM-DD-HH-MM-SS
任何建议和反馈都非常感谢。
谢谢!
Aan Kasman
答案 0 :(得分:0)
我认为最好将日期导入为字符串(甚至是数字),然后将其转换为日期格式。我建议使用lubridate
,它具有一组非常易于使用的函数来将值转换为日期或日期时间。例如:
ymd_hms(20180820173410) # If date stored as as number
[1] "2018-08-20 17:34:10 UTC"
ymd_hms('20180820173410') # If date stored as string
[1] "2018-08-20 17:34:10 UTC"
您可能已经发现,ymd_hms
用于'YYYY-MM-DD HH:MM:SS'格式的日期(月份也可以使用三个字母的缩写来表示)。您还具有诸如mdy
,dmy
及其对应的日期时间功能。
答案 1 :(得分:0)
如果要提取时间,则可以执行以下操作:
test <- "20180820173410"
strptime(test, format = "%Y%m%d%H%M%S")
其中format = "%Y%m%d%H%M%S"
告诉您原始字符串的格式为YearMonthDayHourMinuteSecond
要提取日期,您可以等效地执行以下操作:
as.Date(test, format = "%Y%m%d")
如果您想以以下格式查看时间
YYYY-MM-DD-HH-MM-SS
您可以做到:
format(strptime(test, format = "%Y%m%d%H%M%S"), "%Y-%m-%d-%H-%M-%S")
无论原始输入是字符串还是数字,都可以进行时间转换。