【发布时间】:2019-07-24 11:42:43
【问题描述】:
我有由 100 个 JSON 文件组成的数据框(包括列表而不是因素)。我需要用 0 替换所有 NULL 值。我怎样才能做到这一点?
这是我将 100 个 JSON 文件读入 R 数据框的脚本,大多数 JSON 文件有 20 列,很少有 18 列 [2 列不存在],所以在任何 JSON 文件中缺少列值的地方,默认情况下它为缺失的列创建 NULL 值。
path<-"mypath"
files <- dir(path, pattern = "*.json")
mydf <- files %>%
map_df(~fromJSON(file.path(path, .), flatten = TRUE))
看看下面的例子。前 2 个 JSON 文件具有 column_x 值,但第三个 JSON 文件没有任何具有 column_x 名称的列。因此,在读取文件时,我的脚本会在 JSON 文件中列名不一致的情况下创建 NULL 值......我想要的是在涉及列表的数据框中将此类 NULL 值更改为 0。
mydf[10]
column_x
1 CSCvg17070
2 CSCvd08829
3 NULL
出于生产目的,我的示例 df 如下所示
mydf<-data.frame(col1=c(NULL,"b"),col2=c("f","j"))
mydf$col1<-as.list(mydf$col1)
mydf$col2<-as.list(mydf$col2)
str(mydf)
我尝试执行以下操作,但没有达到预期的效果。
mydf[is.null(mydf)] <- 0
【问题讨论】:
-
Yogesh,我认为您没有按照您的意图定义示例 data.frame? NULL 没有填充,只是 col1 中出现了两次“b”?
-
@Yogesh Kumar,将
NULL更改为NA,因此您的示例data.frame包含缺失值 -
@RussThomas:是的,Null 值没有填充我试过了,但是在我的原始数据框中我有 NULL 值,所以我尝试创建一个类似的数据框。我的数据框也涉及列表,因此发现很难将 NULL 作为值...。我已经用解释更新了我的查询
-
@ladylala :在我的原始数据框中,我有 NULL 而不是 NAs,请在我的问题中参考我更新的 cmets。