【问题标题】:Set NA and "" Cells in R Dataframe to NULL将 R Dataframe 中的 NA 和“”单元格设置为 NULL
【发布时间】:2014-10-27 21:59:19
【问题描述】:

我在 R 中有一个数据框,其中某些列中的某些行的值是 NA 或空字符串 ""。我想将这些转换为 NULL 值。

所以我需要我的数据框中的任何单元格为NA""NULL。我该怎么做?

当我尝试时:

DF[ , DF$Column == NA] <- NULL

DF[ , DF$Column == ""] <- NULL

我收到错误:missing values are not allowed in subscripted assignments of data frames

如果我尝试:

DF[ , is.na(DF$Column)] <- NULL

我收到错误:duplicate subscripts for columns

如果我尝试:

is.na(DF$Column) <- NULL

DF[DF == NA] <- NULL

我没有收到任何错误,但我的数据框没有任何变化。

【问题讨论】:

  • 这是对 R 中 NULL 值的误用。向量(本质上是 data.frame 中的列)不能包含观察值和 NULL 值的混合。在 R 中,我们更喜欢 NA 而不是 NULL 来表示缺失的数据。 NULL 值用于从列甚至整个列中删除元素。
  • 知道了,谢谢!所以我最终会将这个数据集加载到 SQL DB 中。 SQL 会将 NA 解释为 NULL 吗?
  • 取决于你怎么做。如果你使用RODBC::sqlSave,是的,我很确定它是这样工作的。

标签: r dataframe


【解决方案1】:

向量中确实没有 NULL 值。 NA 是占位符。如果您想在其值全部为 NA 时删除整个列(这是分配 NULL 所做的),那么这将成功:

df[ , sapply(df, function(x) all(is.na(x)) ) ] <- NULL

如果你想构造一个对象,只保留那些没有 NA 值的行:

df[ apply(df,1, function(rw) !any(is.na(rw)) ) , ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2013-12-06
    • 2018-02-24
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多