我一直在尝试导入.csv文件(逗号分隔),但是有一个JSON格式的列。这在尝试将数据作为数据帧一次性导入时会产生问题。我一直在尝试read.table和read.csv,但我找不到合适的解决方案(或堆栈上的类似问题)。
是否有一种简单的方法来加载数据帧,并将1 JSON列描述为字符串列?例如" [{" ..." :" ......" ," ...":" ..."}]"基本上是" [{}]"应该在最终的数据帧中以1列结尾。 这对于我来说是非常具有挑战性的,因为''存在于JSON列中,不应视为在那里拆分,而是应该拆分其余列。
期望的输出: df =
V1 V2 V3 JSONCOLUMN
x y z "[{"..." : "..." , "...": "..."}]"
答案 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字符串中删除双引号,我们使用正则表达式将它们重新添加。