使用1个json列导入csv

时间:2018-05-08 10:49:35

标签: r csv

我一直在尝试导入.csv文件(逗号分隔),但是有一个JSON格式的列。这在尝试将数据作为数据帧一次性导入时会产生问题。我一直在尝试read.table和read.csv,但我找不到合适的解决方案(或堆栈上的类似问题)。

是否有一种简单的方法来加载数据帧,并将1 JSON列描述为字符串列?例如" [{" ..." :" ......" ," ...":" ..."}]"基本上是" [{}]"应该在最终的数据帧中以1列结尾。 这对于我来说是非常具有挑战性的,因为''存在于JSON列中,不应视为在那里拆分,而是应该拆分其余列。

期望的输出: df =

    V1 V2 V3 JSONCOLUMN
    x  y  z  "[{"..." : "..." , "...": "..."}]"

1 个答案:

答案 0 :(得分:0)

这是一种有点愚蠢的方式:

# Read csv
df <- read.csv(text =
    '"Date", "Time", "Number", "Fun", "JSON_COLUMN"
    "2-2-1900", "14:09:56", 4, TRUE, "[{"message":"nothing","description": "hello", "otherField": "ciao"}])"');

# Add double quotes for keys and values
df$JSON_COLUMN <- gsub("(\\w+):(\\s*)(\\w+)", "\"\\1\":\\2\"\\3\"", df$JSON_COLUMN)
df;
#Date      Time Number   Fun
#1     2-2-1900  14:09:56      4  TRUE
#                                                   JSON_COLUMN
#1  [{"message":"nothing","description": "hello", "otherField": "ciao"}])

说明:由于read.csv从JSON字符串中删除双引号,我们使用正则表达式将它们重新添加。