如何在R语言中将某列的1970-01-01 00:00:00替换为NA?
解决方法
你的代码没成功,大概率是因为Committed列是POSIXct/POSIXlt日期时间类型,而非字符串类型,直接用字符串比较会不匹配。以下是两种可行的实现方式:
基础R方法
先将目标时间转换为对应日期时间类型,再进行替换:
# 定义目标时间(如果原列有时区,需指定对应tz参数,比如tz="UTC") target_time <- as.POSIXct("1970-01-01 00:00:00") # 替换匹配值为NA ESM13$Committed[ESM13$Committed == target_time] <- NA
若不确定列的时区,可先查看原列的时区属性:
attr(ESM13$Committed, "tzone")
然后在as.POSIXct中指定相同的tz参数,确保时间匹配。
dplyr::mutate 方法
使用dplyr包的mutate结合if_else实现替换:
library(dplyr) # 同样需注意时区匹配 target_time <- as.POSIXct("1970-01-01 00:00:00") ESM13 <- ESM13 %>% mutate(Committed = if_else(Committed == target_time, NA, Committed))
如果Committed列是字符类型,建议先将其转换为日期时间类型再处理(方便后续日期操作):
ESM13$Committed <- as.POSIXct(ESM13$Committed)
之后再执行上述替换逻辑即可。
内容的提问来源于stack exchange,提问作者user20452670
相关产品推荐
相关产品推荐

