删除数据框中的空值

时间:2019-11-07 08:22:53

标签: r null

我真的是R的新手,所以如果有一个我可以轻松理解的解决方案,那就太好了。 我有一个包含两列的数据集,一个日期和一个价格,在某些情况下价格可以为空。 我尝试使用na.omitcomplete.cases删除这些值,但似乎它们仅适用于NA值。

行看起来像这样

2017-05-31 12615.059570
2017-06-01 12664.919922
2017-06-02 12822.940430
2017-06-05         null

那么有没有办法删除数据框中的空值?

2 个答案:

答案 0 :(得分:0)

由于您没有使用dput()提供示例数据,所以我不知道您的NULL值的格式(是文本的“真实” NULL吗?)...

当您的NULL为字符值时,下面的代码应该可以工作。

library(data.table)
data <- fread("
2017-05-31 12615.059570
2017-06-01 12664.919922
2017-06-02 12822.940430
2017-06-05         NULL")

data[ data == "NULL"] <- NA
data[ complete.cases(data),]

#            V1           V2
# 1: 2017-05-31 12615.059570
# 2: 2017-06-01 12664.919922
# 3: 2017-06-02 12822.940430

答案 1 :(得分:0)

您还可以通过以下方式删除该行:查找包含“ null”的行,然后重新定义data.frame(),而不添加该行:

代码:

df <- df[!df$V2 == "null", ] 
# "!" negates, so this statement represents: keep all rows in which V2 is not equal to "null"
          V1           V2
1 2017-05-31 12615.059570
2 2017-06-01 12664.919922
3 2017-06-02 12822.940430

数据:

df <- read.table(text = 
"2017-05-31 12615.059570
 2017-06-01 12664.919922
 2017-06-02 12822.940430
 2017-06-05     null", header = F, sep = "", stringsAsFactors = F)

          V1           V2
1 2017-05-31 12615.059570
2 2017-06-01 12664.919922
3 2017-06-02 12822.940430
4 2017-06-05         null