如何处理R数据框中的空字符串?转为NA或删除
解决空字符串转NA/删除的问题
直接替换空字符串为NA
既然已经确认空字符串和""完全匹配,直接用逻辑索引替换最直接高效:
# 替换指定列的空字符串为NA Times$LowWorkload_Single_Start[Times$LowWorkload_Single_Start == ""] <- NA
用tidyverse工具替换(适合dplyr用户)
如果你习惯用tidyverse语法,用if_else做条件替换:
library(dplyr) Times <- Times %>% mutate(LowWorkload_Single_Start = if_else(LowWorkload_Single_Start == "", NA_character_, LowWorkload_Single_Start))
删除包含空字符串的行
如果不需要保留这些空值行,直接过滤掉:
# 基础R写法 Times <- Times[Times$LowWorkload_Single_Start != "", ] # dplyr写法 Times <- Times %>% filter(LowWorkload_Single_Start != "")
为什么之前的gsub没用?
你之前写的gsub("''", ...)是匹配两个单引号的内容,但你的空字符串是""(没有任何字符)。如果非要用gsub,应该匹配空字符串的正则^$(表示从开头到结尾没有字符):
Times$LowWorkload_Single_Start <- gsub("^$", NA_character_, Times$LowWorkload_Single_Start)
不过这种方法不如直接逻辑替换直观高效,更推荐前面的方法。
替换成NA之后,计算时间戳的最小/最大值时记得加na.rm = TRUE,就能得到正确结果:
min(Times$LowWorkload_Single_Start, na.rm = TRUE) max(Times$LowWorkload_Single_Start, na.rm = TRUE)
内容的提问来源于stack exchange,提问作者RH4818
相关产品推荐
相关产品推荐

