使用tidyr::fill()填充日期字段空白值遇报错,求解决方法
解决tidyr::fill()处理日期字段时的报错问题
你遇到的报错和fill()是否支持日期类型无关,问题出在错误的调用方式:你把fill()放在了mutate()里面作为赋值函数使用,但fill()本身是一个独立的tidyverse数据处理动词,需要直接在管道中操作数据框的列,不能嵌套在mutate()里。
fill()完全支持Date类型的字段,以下是两种正确的写法:
1. 直接填充原字段
如果不需要保留原字段的缺失值,可以直接对目标列执行填充:
library(dplyr) library(tidyr) test <- test %>% fill(inception_date, expiry_date, .direction = "down")
2. 生成新字段保留原数据
如果想保留原始的inception_date和expiry_date列,先复制生成新列再填充:
test <- test %>% mutate( new_inception_date = inception_date, new_expiry_date = expiry_date ) %>% fill(new_inception_date, new_expiry_date, .direction = "down")
执行以上代码后,日期类型的缺失值就能正常向下填充了。
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

