【发布时间】:2020-01-03 00:16:44
【问题描述】:
我正在尝试将时间戳分解为一小时的日期。 csv 中的时间戳如下所示:2018-12-17T12:25:00Z。时间戳本身没有 NA 或违规行为。但是当我运行代码块时
x %>%
mutate(
chicago_mkt_interval = with_tz(gmt_mkt_interval, "America/Chicago"),
pricedate = as_date(floor_date(chicago_mkt_interval - minutes(1), "day")),
hour = hour(ceiling_date(chicago_mkt_interval - minutes(1), "hour")),
hour = ifelse(hour == 0L, 24L, hour),
minute = minute(chicago_mkt_interval - minutes(1)) + 1
) %>%
select(-chicago_mkt_interval) %>%
select(pricedate, hour, gmt_mkt_interval, everything())
我收到一个错误
Error in mutate_impl(.data, dots) :
Evaluation error: missing value where TRUE/FALSE needed.
Calls: %>% ... <Anonymous> -> mutate -> mutate.tbl_df -> mutate_impl -> .Call
这里有一个sn-p的回溯:
Error: Column `4` cannot have NA as name
12.
stop(structure(list(message = "Column `4` cannot have NA as name",
call = NULL, cppstack = NULL), class = c("Rcpp::exception",
"C++Error", "error", "condition")))
11.
mutate_impl(.data, dots, caller_env())
10.
mutate.tbl_df(., chicago_mkt_interval = with_tz(gmt_mkt_interval,
"America/Chicago"), pricedate = as_date(floor_date(chicago_mkt_interval -
minutes(1), "day")), hour = hour(ceiling_date(chicago_mkt_interval -
minutes(1), "hour")), hour = ifelse(hour == 0L, 24L, hour), ...
我是 R 新手,所以不确定是否是修复或改进错误处理的最佳方法。
【问题讨论】:
-
请用
dput展示一个可重复的小例子 -
对于错误处理,您可以使用 base R 中的 tryCatch 或
purrr中的safely/possibly -
R 没有时间对象,只有日期时间对象,所以最好将日期和时间部分放在一起,只在需要时才拆分。下面 Ronak 的基本 R 答案就是一个很好的例子。
标签: r if-statement na dplyr