如何解析ID对应的R中的Json
我在下面提到了dataframe:如何解析ID对应的R中的Json,r,json,dataframe,jsonlite,R,Json,Dataframe,Jsonlite,我在下面提到了dataframe: ID Json_Data PA-124 Json String PA-145 Json String PA-185 Json String PA-149 Json String 我想提取与每个ID对应的所有json字段,如下所述 我想知道如何针对每个特定的ID(即国家)提取特定字段 为此,我使用了下面提到的代码,但它只针对1500个ID中的一个ID返回值 我的代码: library(RJSONIO)
ID Json_Data
PA-124 Json String
PA-145 Json String
PA-185 Json String
PA-149 Json String
我想提取与每个ID对应的所有json字段,如下所述
我想知道如何针对每个特定的ID
(即国家)提取特定字段
为此,我使用了下面提到的代码,但它只针对1500个ID中的一个ID返回值
我的代码:
library(RJSONIO)
library(rjson)
library(jsonlite)
library(data.table)
f <- function(json, id){
tmp <- jsonlite::fromJSON(json)
tmp <- as.data.frame(tmp)
tmp$id <- id
return(tmp)
}
json_dfs <-
mapply(f, Df$Json_Data, Df$ID, SIMPLIFY = FALSE)
可以使用
unlist
将其转换为字符向量,然后将字符向量列表行绑定到data.frame中。然后将结果与您的ID绑定
cbind(temp$ID,
do.call(rbind, lapply(temp$Json_Data, function(x) unlist(jsonlite::fromJSON(x))))
)
结果:
hed.srti nnaesr.name nnaesr.firt nnaesr.last nnaesr.birth nnaesr.gender iteret.adre iteret.adfe iteret.sfdet iteret.sfeet iteret.serted iteret.sertgf
[1,] "PA-124" "RT1455" "" "alex" "john" "26061981" "Male" "asded14eer" "" "" "" "" ""
[2,] "PA-124" "RT1455" "" "alex" "john" "26061981" "Male" "asded14eer" "" "" "" "" ""
[3,] "PA-124" "RT1455" "" "alex" "john" "26061981" "Male" "asded14eer" "" "" "" "" ""
sefetgd.mobe sefetgd.dfete sefetgd.tfet aarfgeette.aarfgertte aarfgeette.aarfgot2 aarfgeette.aarfgot3 aarfgeette.aarfgot4 aarfgeette.aarfgot5 aarfgeette.sdfffy
[1,] "2111111" "" "sdfet" "H NO. , dffr rtrg" "ids School, feeeete," "" "" "" "errtyy"
[2,] "2111111" "" "sdfet" "efeet efet" "affe fe," "" "" "" "Telangana"
[3,] "2111111" "" "sdfet" "ad.de 25dfege" "adfed ," "" "" "" "adffe"
aarfgeette.errrte aarfgeette.sdetVb aarfgeette.sdfes aarfgeette.aarfgppr aarfgeette.seferf
[1,] "efeteet" "" "5500" "eretft er" "ered"
[2,] "Hyderabad" "" "5500" "acefec ee" "dfefe"
[3,] "Hyderabad" "" "5500" "sadfe ad" "dsfde"
请让你的例子重现。您可以发布前几行的
dput
?“Json字符串”
将非常有用。@Axeman感谢您用Json字符串更新了问题。实际上,我们更喜欢Df
的dput
,而不仅仅是Json字符串列。您还可以将dput(head(Df,3)
添加到问题中吗?@Shique我已经用dput更新了问题。如果dput(head(Df,3))
仅返回该值,则表示问题中的Df
只包含一行,从而得到您想要的(只有一个ID)。您需要将所有ID及其json数据放入Df
。获取此错误:错误:词法错误:json文本中的字符无效。NA(此处)----^调用自:parse_string(txt,bigint_as_char)
您的数据中存在格式不正确的json,请逐个尝试查找有问题的json。例如,对于(临时$json_数据中的x){print(x);fromJSON(x)}是的,我有一个大的数据帧,逐个检查会很费时…我们没有其他选项从数据帧中找到这种格式错误的Json并将其删除吗?是的,我在注释中添加了它,但仍然无法解析…:(
cbind(temp$ID,
do.call(rbind, lapply(temp$Json_Data, function(x) unlist(jsonlite::fromJSON(x))))
)
hed.srti nnaesr.name nnaesr.firt nnaesr.last nnaesr.birth nnaesr.gender iteret.adre iteret.adfe iteret.sfdet iteret.sfeet iteret.serted iteret.sertgf
[1,] "PA-124" "RT1455" "" "alex" "john" "26061981" "Male" "asded14eer" "" "" "" "" ""
[2,] "PA-124" "RT1455" "" "alex" "john" "26061981" "Male" "asded14eer" "" "" "" "" ""
[3,] "PA-124" "RT1455" "" "alex" "john" "26061981" "Male" "asded14eer" "" "" "" "" ""
sefetgd.mobe sefetgd.dfete sefetgd.tfet aarfgeette.aarfgertte aarfgeette.aarfgot2 aarfgeette.aarfgot3 aarfgeette.aarfgot4 aarfgeette.aarfgot5 aarfgeette.sdfffy
[1,] "2111111" "" "sdfet" "H NO. , dffr rtrg" "ids School, feeeete," "" "" "" "errtyy"
[2,] "2111111" "" "sdfet" "efeet efet" "affe fe," "" "" "" "Telangana"
[3,] "2111111" "" "sdfet" "ad.de 25dfege" "adfed ," "" "" "" "adffe"
aarfgeette.errrte aarfgeette.sdetVb aarfgeette.sdfes aarfgeette.aarfgppr aarfgeette.seferf
[1,] "efeteet" "" "5500" "eretft er" "ered"
[2,] "Hyderabad" "" "5500" "acefec ee" "dfefe"
[3,] "Hyderabad" "" "5500" "sadfe ad" "dsfde"