我正在尝试拆分一些数据(字符串),并将它们放入数据帧中。在我的字符串中,第一个是col,第二个是它的值。我的数据如下:
"\"id\":247,\"hseStr\":[1,1,1,1],\"pertun\":96,\"sqrMtr\":[2500,2500,2500,2500,2500,2500],\"hDWInt\":[],\"hDWIIncptn\":[],\"hDWIID\"":[],\"cntRateRgn\":\"2102B02\",\"prclID\":\"4748403C\", \"hAction\":null ,\"mAction\":null,\"addrGrps\":null,\"hseEQDdctbl\":[51.8594958810969,42.理想情况下,我想成为这样的人:
id hseStr pertun sqrMtr ...
247 [1,1,1,1] 96 [2500,2500,2500,2500,2500,2500]...以前,我将数据除以",“然后将其放在表中,但是在这里,因为有更多的",”在诸如1,1,1,1等值中使用的数据,所以我不能使用这个方法!
我在某种程度上区分了文本中使用的",“,并将它们替换为不同的字符。
更新完整字符串:
"{\"id\":21247,\"hs111\":[1,1,1,1],\"p2n\":96,\"sq211\":[20,500,20,20,20,20],\"hoi\":[],\"hsa\":[],\"h961\":[],\"h885\":[],\"t252\":[],\"cn01\":[],\"cD56\":[],\"cI65\":[],\"mD24\":[],\"mD23\":[],\"m63\":[],\"m985\":[],\"h23\":[],\"c112\":[],\"m41\":[],\"r54\":1,\"m63\":\"S6\",\"hs74\":\"2\",\"c55\":\"21\",\"p12\":\"4C\",\"h11\":null,\"m14\":null,\"a12\":null,\"h88\":[1.8,2.3,6.4,28.2,17.9,11.0,7.0,4.1,2.5,0],\"h87\":[3.9,6.1,6.9,4.2,3.7,2.487,1.6],\"cn98\":[1.25,3.1,1.4,12.1,5.3,2.2,1.1,0.5,0.2,0],\"h76\":null,\"c12\":null,\"m54\":null}"发布于 2020-04-24 06:57:06
我们可以从构建来处理JSON的包中获得帮助:
stack(jsonlite::fromJSON(string))
# values ind
#1 21247 id
#2 1 hs111
#3 1 hs111
#4 1 hs111
#5 1 hs111
#6 96 p2n
#7 20 sq211
#8 500 sq211
#9 20 sq211
#10 20 sq211
#11 20 sq211
#12 20 sq211
#13 1 r54
#14 S6 m63
#15 2 hs74
#16 21 c55
#17 4C p12
#18 1.8 h88
#19 2.3 h88
#20 6.4 h88
#...
#...这将从输出中删除NULL值,如果希望保留它,可以用NA替换它。这也为每个元素提供了单独的行。
如果希望将每个键保留为单行,将值保留为列表,则可以从tibble中使用tibble。
tibble::enframe(jsonlite::fromJSON(string))
# A tibble: 33 x 2
# name value
# <chr> <list>
# 1 id <int [1]>
# 2 hs111 <int [4]>
# 3 p2n <int [1]>
# 4 sq211 <int [6]>
# 5 hoi <list [0]>
# 6 hsa <list [0]>
# 7 h961 <list [0]>
# 8 h885 <list [0]>
# 9 t252 <list [0]>
#10 cn01 <list [0]>
# … with 23 more rowshttps://stackoverflow.com/questions/61401396
复制相似问题