0

我有包含不同长度的 JSON 格式(我的意思是值)的数据框列,我使用过--fromJSON 函数并对其进行解析,但它包含多个嵌套列表,我不知道如何将 JSON 中的每个值分隔成一个多列...

Values
{"ssdata":[{"v1":"-49.88","v2":"00.02"}],"sdata":[{"v3":"59","v4":"26.4","v5":"24.40","v6":"61.34"}]}
{"ssdata":[{"v1":"-49.76","v2":"00.00"}],"sdata":[{"v3":"60","v4":"26.4","v5":"24.40","v6":"62.13"}]}
{"ssdata":[{"v1":"-49.76","v2":"00.06"}],"sdata":[{"v3":"54","v4":"28.0","v5":"25.97","v6":"56.72"}]}
{"ssdata":[{"v1":"","v2":"","v3":"14"}],"sdata":[{"v4":"46.42","v5":"25.40"}]}
{"ssdata":[{"v1":"","v2":"","v3":"14"}],"sdata":[{"v4":"0.40","v5":"108.94"}]}

任何人都可以像我需要每个值(即)v1,v2,v3,v4 ...在单独的列中提供帮助...就像在R中可以做到这一点...??真的需要帮助...!

4

2 回答 2

0

正如@Gregor 已经提到的,您可以尝试jsonlite

library(jsonlite)
library(data.table)

df1 <- rbindlist(lapply(df$values, function(x) as.data.frame(fromJSON(x))), fill = T)

这使

> df1
   ssdata.v1 ssdata.v2 sdata.v3 sdata.v4 sdata.v5 sdata.v6 ssdata.v3
1:    -49.88     00.02       59     26.4    24.40    61.34      <NA>
2:    -49.76     00.00       60     26.4    24.40    62.13      <NA>
3:    -49.76     00.06       54     28.0    25.97    56.72      <NA>
4:                         <NA>    46.42    25.40     <NA>        14
5:                         <NA>     0.40   108.94     <NA>        14


样本数据:

df <- structure(list(values = c("{\"ssdata\":[{\"v1\":\"-49.88\",\"v2\":\"00.02\"}],\"sdata\":[{\"v3\":\"59\",\"v4\":\"26.4\",\"v5\":\"24.40\",\"v6\":\"61.34\"}]}", 
"{\"ssdata\":[{\"v1\":\"-49.76\",\"v2\":\"00.00\"}],\"sdata\":[{\"v3\":\"60\",\"v4\":\"26.4\",\"v5\":\"24.40\",\"v6\":\"62.13\"}]}", 
"{\"ssdata\":[{\"v1\":\"-49.76\",\"v2\":\"00.06\"}],\"sdata\":[{\"v3\":\"54\",\"v4\":\"28.0\",\"v5\":\"25.97\",\"v6\":\"56.72\"}]}", 
"{\"ssdata\":[{\"v1\":\"\",\"v2\":\"\",\"v3\":\"14\"}],\"sdata\":[{\"v4\":\"46.42\",\"v5\":\"25.40\"}]}", 
"{\"ssdata\":[{\"v1\":\"\",\"v2\":\"\",\"v3\":\"14\"}],\"sdata\":[{\"v4\":\"0.40\",\"v5\":\"108.94\"}]}"
)), .Names = "values", class = "data.frame", row.names = c(NA, 
-5L))
于 2018-06-21T10:42:33.543 回答
0

库(jsonlite)库(data.table)

df1 <- rbindlist(lapply(df$values, function(x) as.data.frame(fromJSON(x))), fill = T)

于 2018-06-23T16:01:35.990 回答