【发布时间】:2018-10-18 07:59:01
【问题描述】:
我在下面提到了数据框:
ID Json_Data
PA-124 Json String
PA-145 Json String
PA-185 Json String
PA-149 Json String
我想提取下面提到的每个ID对应的所有json字段。
我想知道如何针对每个特定的ID(即国家/地区)提取一些特定字段。
ID Name Country Code
PA-124 Ajre Dubai 154
PA-145 Aret USA 485
PA-185 Cret Russia 445
PA-149 Oerp Canada 789
为此,我使用了下面提到的代码,但它仅针对 ~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)
输入:
structure(list(ID = c("PA-124", "PA-124", "PA-124"), Json_Data = c("{\n \"hed\": {\n \"srti\": \"RT1455\"\n },\n \"nnaesr\": {\n \"name\": \"\",\n \"firt\": \"alex\",\n \"last\": \"john\",\n \"birth\": \"26061981\",\n \"gender\": \"Male\"\n },\n \"iteret\": {\n \"adre\": \"asded14eer\",\n \"adfe\": \"\",\n \"sfdet\": \"\",\n \"sfeet\": \"\",\n \"serted\": \"\",\n \"sertgf\": \"\"\n },\n \"sefetgd\": {\n \"mobe\": \"2111111\",\n \"dfete\": \"\",\n \"tfet\": \"sdfet\"\n },\n \"aarfgeette\": {\n \"aarfgertte\": \"H NO. , dffr rtrg\",\n \"aarfgot2\": \"ids School, feeeete,\",\n \"aarfgot3\": \"\",\n \"aarfgot4\": \"\",\n \"aarfgot5\": \"\",\n \"sdfffy\": \"errtyy\",\n \"errrte\": \"efeteet\",\n \"sdetVb\": \"\",\n \"sdfes\": \"5500\",\n \"aarfgppr\": \"eretft er\",\n \"seferf\": \"ered\"\n }\n}",
"{\n \"hed\": {\n \"srti\": \"RT1455\"\n },\n \"nnaesr\": {\n \"name\": \"\",\n \"firt\": \"alex\",\n \"last\": \"john\",\n \"birth\": \"26061981\",\n \"gender\": \"Male\"\n },\n \"iteret\": {\n \"adre\": \"asded14eer\",\n \"adfe\": \"\",\n \"sfdet\": \"\",\n \"sfeet\": \"\",\n \"serted\": \"\",\n \"sertgf\": \"\"\n },\n \"sefetgd\": {\n \"mobe\": \"2111111\",\n \"dfete\": \"\",\n \"tfet\": \"sdfet\"\n },\n \"aarfgeette\": {\n \"aarfgertte\": \"efeet efet\",\n \"aarfgot2\": \"affe fe,\",\n \"aarfgot3\": \"\",\n \"aarfgot4\": \"\",\n \"aarfgot5\": \"\",\n \"sdfffy\": \"Telangana\",\n \"errrte\": \"Hyderabad\",\n \"sdetVb\": \"\",\n \"sdfes\": \"5500\",\n \"aarfgppr\": \"acefec ee\",\n \"seferf\": \"dfefe\"\n }\n}",
"{\n \"hed\": {\n \"srti\": \"RT1455\"\n },\n \"nnaesr\": {\n \"name\": \"\",\n \"firt\": \"alex\",\n \"last\": \"john\",\n \"birth\": \"26061981\",\n \"gender\": \"Male\"\n },\n \"iteret\": {\n \"adre\": \"asded14eer\",\n \"adfe\": \"\",\n \"sfdet\": \"\",\n \"sfeet\": \"\",\n \"serted\": \"\",\n \"sertgf\": \"\"\n },\n \"sefetgd\": {\n \"mobe\": \"2111111\",\n \"dfete\": \"\",\n \"tfet\": \"sdfet\"\n },\n \"aarfgeette\": {\n \"aarfgertte\": \"ad.de 25dfege\",\n \"aarfgot2\": \"adfed ,\",\n \"aarfgot3\": \"\",\n \"aarfgot4\": \"\",\n \"aarfgot5\": \"\",\n \"sdfffy\": \"adffe\",\n \"errrte\": \"Hyderabad\",\n \"sdetVb\": \"\",\n \"sdfes\": \"5500\",\n \"aarfgppr\": \"sadfe ad\",\n \"seferf\": \"dsfde\"\n }\n}"
)), row.names = c(NA, 3L), class = "data.frame")
【问题讨论】:
-
请使您的示例可重现。你能发布前几行的
dput吗?"Json string"会很有用。 -
@Axeman 谢谢 用 json 字符串更新了问题。
-
其实我们更喜欢
Df的dput,而不仅仅是json字符串列。你也可以在问题中添加dput(head(Df,3)吗? -
@Shique 我已经用 dput 更新了问题。
-
如果
dput(head(Df,3))只返回那个,那么这意味着有问题的Df只包含 1 行,导致你得到什么(只有一个 ID)。您需要将所有 ID 及其 json 数据放入Df。