如何将R语言DataFrame中指定月份的数值替换为空单元格(非NA)
错误原因
原代码最后一步的赋值写法不符合dplyr::mutate的语法规则,且R的数值型列本身不支持直接存储空字符串,需要根据使用场景选择对应方案:
方案1:R环境内直接显示空单元格
该方案会将Value列转换为字符型,1/2/11/12月对应的位置直接显示为空:
library(lubridate) library(tidyverse) set.seed(123) DF <- data.frame(Date = seq(as.Date("2001-01-01"), to = as.Date("2005-12-31"), by = "day"), Value = runif(1826,1,5)) %>% mutate(Year = year(Date), Month = month(Date), Day = day(Date), Value = ifelse(Month %in% c(1,2,11,12), "", as.character(Value)))
方案2:保留Value数值属性,仅导出文件时显示空单元格
如果后续还要对Value做数值计算,先将指定月份的值设为NA,导出CSV/Excel时再设置空值替换即可,不会影响后续计算:
library(lubridate) library(tidyverse) set.seed(123) DF <- data.frame(Date = seq(as.Date("2001-01-01"), to = as.Date("2005-12-31"), by = "day"), Value = runif(1826,1,5)) %>% mutate(Year = year(Date), Month = month(Date), Day = day(Date), Value = replace(Value, Month %in% c(1,2,11,12), NA)) # 导出为CSV时设置na参数,最终文件内对应位置就是空单元格 write.csv(DF, "导出结果.csv", na = "", row.names = FALSE)
注意事项
R的数值型向量仅支持存储数字和NA,不存在空字符串的有效值,不需要后续计算选方案1,需要做数值运算选方案2即可。
内容的提问来源于stack exchange,提问作者Hydro
相关产品推荐
相关产品推荐

