如何调整R中日期时间列的类向量顺序以解决连接失败问题
解决R中POSIXt/POSIXct类顺序导致的连接失败问题
你碰到的问题根源是两个日期时间列的类向量顺序不一致——一个是c("POSIXt", "POSIXct"),另一个是c("POSIXct", "POSIXt"),dplyr的连接函数会把它们判定为不兼容类型。其实POSIXt是虚类,POSIXct是具体的日期时间存储类,只要统一类顺序就能解决问题,以下是几种可行的方法:
直接重置类顺序:手动指定标准的类顺序
c("POSIXct", "POSIXt"),同时保留时区信息:# 调整x数据框的timestamp列 x$timestamp <- structure(x$timestamp, class = c("POSIXct", "POSIXt"), tzone = attr(x$timestamp, "tzone")) # 调整y数据框的deploy_on_date列 y$deploy_on_date <- structure(y$deploy_on_date, class = c("POSIXct", "POSIXt"), tzone = attr(y$deploy_on_date, "tzone"))用as.POSIXct()强制转换:这个函数会自动将对象的类设置为标准顺序,操作更简洁:
x$timestamp <- as.POSIXct(x$timestamp) y$deploy_on_date <- as.POSIXct(y$deploy_on_date)批量处理多列(dplyr方式):如果数据框中有多个这类日期列,可以用
across()批量转换:library(dplyr) x <- x %>% mutate(across(where(is.POSIXt), as.POSIXct)) y <- y %>% mutate(across(where(is.POSIXt), as.POSIXct))
调整完成后,再运行full_join()就不会出现类型不兼容的错误了:
full_join(x, y, by = c("timestamp" = "deploy_on_date"))
内容的提问来源于stack exchange,提问作者Nova
相关产品推荐
相关产品推荐

