如何在 R 中解析 json 个对象(保存为 csv)

How to parse json objects (saved as csv) in R

到目前为止,我有这个:

file         responses
file1.csv    {"Q0":2, "Q1":2, "Q2":2, "Q3":2, .... "Q15":2}
file2.csv    {"Q0":2, "Q1":2, "Q2":2, "Q3":2, .... "Q15":2}

但是每个文件的全部数据只有一个单元格。

我想要这个:

 Item    responses    file
 Q0      2            file1.csv
 Q1      2            file1.csv
 Q2      2            file1.csv
 ...
 Q15     2            file1.csv
 Q0      2            file2.csv
 Q1      2            file2.csv
 Q2      2            file2.csv
 ...
 Q15     2            file2.csv

非常感谢!

1) 读取每个文件并将其从 JSON 格式转换为所需的格式。最后使用 rbind.

组合每一个
# create test data
cat('{"Q0":1, "Q1":2, "Q2":3, "Q3":4, "Q15":5}\n', file = "file1.csv")
cat('{"Q0":11, "Q1":12, "Q2":13, "Q3":14, "Q15":15}\n', file = "file2.csv")
Files <- c("file1.csv", "file2.csv")

library(rjson)

m <- do.call("rbind", lapply(Files, function(f) {
  x <- fromJSON(file = f)
  cbind(Item = names(x), responses = unname(unlist(x)), file = f)
}))

给出这个字符矩阵:

> m
      Item  responses file       
 [1,] "Q0"  "1"       "file1.csv"
 [2,] "Q1"  "2"       "file1.csv"
 [3,] "Q2"  "3"       "file1.csv"
 [4,] "Q3"  "4"       "file1.csv"
 [5,] "Q15" "5"       "file1.csv"
 [6,] "Q0"  "11"      "file2.csv"
 [7,] "Q1"  "12"      "file2.csv"
 [8,] "Q2"  "13"      "file2.csv"
 [9,] "Q3"  "14"      "file2.csv"
[10,] "Q15" "15"      "file2.csv"

2) 如果你的意思是你的起点不是文件本身而是一个数据框 DF with file and responses 列然后:

# form input data frame -- this is the two columns shown in the question
DF <- data.frame(file = Files, responses = sapply(Files, readLines))

dd <- do.call("rbind", by(DF, DF$file, function(d) {
  f <- as.character(d$file)
  x <- fromJSON(json_str = as.character(d$responses))
  data.frame(Item = names(x), responses = unname(unlist(x)), file = f, 
   stringsAsFactors = FALSE)
}))
rownames(dd) <- NULL

给这个数据框:

> dd
   Item responses      file
1    Q0         1 file1.csv
2    Q1         2 file1.csv
3    Q2         3 file1.csv
4    Q3         4 file1.csv
5   Q15         5 file1.csv
6    Q0        11 file2.csv
7    Q1        12 file2.csv
8    Q2        13 file2.csv
9    Q3        14 file2.csv
10  Q15        15 file2.csv