【问题标题】:replacing missing values(NAs) with white space(" ") or dot(".") while exporting a dataframe using write.csv使用 write.csv 导出数据帧时,用空格(“”)或点(“.”)替换缺失值(NA)
【发布时间】:2017-12-12 10:17:45
【问题描述】:

我有一个包含缺失值的典型数据框,我想将此数据导出到 cvs 或 Excel 工作簿中,但我想以不同方式处理缺失值,因为我想在 STATA 中使用此数据框接受 NA 作为缺失值。

我知道 r 默认将任何缺失值处理为 NA,是否告诉 R 在导出时以不同方式处理?说使用空格或点来表示我将在 STATA 中使用的导出文件中的缺失值?

谢谢

【问题讨论】:

  • 将数据框导出到 csv 文件时,请在 write.csv 中指定 na 参数。对于 Excel 文件,在 write.xlsx 中指定 showNA
  • 如果您的数据确实包含空值,下面列出的解决方案应该可以工作。您确定它们实际上不是“NA”字符串吗?例如。 c("NA","NA") != c(NA,NA)

标签: r excel csv


【解决方案1】:

来自?write.csv

用于数据中缺失值的字符串。

例如write.csv(x, file = "foo.csv", na='.')

【讨论】:

  • 您好 Otto,谢谢,但仍然无法处理此数据集!
【解决方案2】:

样本数据:

library(data.table)
dt <- data.table("col1" = c(1,2,NA),
                 "col2" = c(NA,NA,0))

> dt
   col1 col2
1:    1   NA
2:    2   NA
3:   NA    0

NAs 替换为“.”

dt[is.na(dt)] <- "."
> dt
   col1 col2
1:    1    .
2:    2    .
3:    .    0

write.csv(dt,"test2.csv",na=".",row.names = FALSE)

【讨论】:

  • 我试过那个代码,我的结果导出文件的列中仍然有缺失值的 NAs
【解决方案3】:

您可以创建一个新数据集,在其中将 NA 替换为一个字符。

例如data[is.na(data)]&lt;-"."

【讨论】:

    【解决方案4】:

    这是一个基于我的评论的示例:

    df <- mtcars
    df$miss <- NA
    # NA values as empty cells 
    write.csv(df, file = "df.csv", na = "") # for csv file
    xlsx::write.xlsx(df, file = "df.xlsx", showNA = FALSE) # for excel file
    

    【讨论】:

    • 我很惊讶,它在这些测试数据集上运行得非常好,我想我需要好好看看我的数据集
    • 确保在导出之前没有更改数据中缺失值的默认模式(即NA)。
    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2010-11-18
    • 2019-02-20
    • 2013-04-01
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多