Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JSON blob中的值提取到R数据帧中的新列中?_Json_R - Fatal编程技术网

如何将JSON blob中的值提取到R数据帧中的新列中?

如何将JSON blob中的值提取到R数据帧中的新列中?,json,r,Json,R,我被困在以下问题上: 我有一个数据帧,其中有一个包含JSON对象的变量(在var2中): (粘贴箱上的代码) 我想提取var2中的JSON属性,并将它们放到新列中的数据框中,如下所示: var1 var2 prop1 prop2 prop3 1 1 {"property1": "val1", "property2": 5} val1 5 NA 2 2 {"property1": "val2", "p

我被困在以下问题上:

我有一个数据帧,其中有一个包含JSON对象的变量(在
var2
中):

(粘贴箱上的代码)

我想提取
var2
中的JSON属性,并将它们放到新列中的数据框中,如下所示:

  var1                                  var2 prop1 prop2 prop3
1    1 {"property1": "val1", "property2": 5}  val1     5    NA
2    2 {"property1": "val2", "property2": 8}  val2     8    NA
3    3 {"property1": "val3", "property2": 7}  val3     7    NA
4    4 {"property1": "val4", "property2": 0}  val4     0    NA
5    5 {"property1": "val5", "property2": 9}  val5    NA     9
给定相同序列中的相同属性,我找到了使其工作的方法:

jsonProps <- sapply(df$var2, function(x) fromJSON(x)) %>%
  t() %>%
  as.data.frame()
rownames(jsonProps) <- NULL

y <- cbind(df, jsonProps)
jsonProps%
t()%>%
as.data.frame()

rownames(jsonProps)这并不能满足您的所有需求,但可能更好

library("dplyr")
library("jsonlite")

get_it <- function(x) {
  jsonlite::fromJSON(as.character(x))
}

tbl_df(test) %>%
  rowwise() %>%
  mutate(one = get_it(var2)[[1]],
         two = get_it(var2)[[2]])

Source: local data frame [5 x 4]
Groups: <by row>

   var1                                  var2   one   two
  (dbl)                                (fctr) (chr) (int)
1     1 {"property1": "val1", "property2": 5}  val1     5
2     2 {"property1": "val2", "property2": 8}  val2     8
3     3 {"property1": "val3", "property2": 7}  val3     7
4     4 {"property1": "val4", "property2": 0}  val4     0
5     5 {"property1": "val5", "property3": 9}  val5     9
库(“dplyr”)
图书馆(“jsonlite”)
得到它%
行()
突变(一=得到它(var2)[[1]],
二=得到它(var2)[[2]]
来源:本地数据帧[5 x 4]
组:
var1 var2一二
(dbl)(fctr)(chr)(内部)
1{“财产1”:“价值1”,“财产2”:5}5
2{“不动产1”:“val2”,“不动产2”:8}val2 8
3{“财产1”:“val3”,“财产2”:7}val3 7
4{“property1”:“val4”,“property2”:0}val4 0
5{“不动产1”:“val5”,“不动产3”:9}val5 9

这并不是你想要的一切,但也许更好

library("dplyr")
library("jsonlite")

get_it <- function(x) {
  jsonlite::fromJSON(as.character(x))
}

tbl_df(test) %>%
  rowwise() %>%
  mutate(one = get_it(var2)[[1]],
         two = get_it(var2)[[2]])

Source: local data frame [5 x 4]
Groups: <by row>

   var1                                  var2   one   two
  (dbl)                                (fctr) (chr) (int)
1     1 {"property1": "val1", "property2": 5}  val1     5
2     2 {"property1": "val2", "property2": 8}  val2     8
3     3 {"property1": "val3", "property2": 7}  val3     7
4     4 {"property1": "val4", "property2": 0}  val4     0
5     5 {"property1": "val5", "property3": 9}  val5     9
库(“dplyr”)
图书馆(“jsonlite”)
得到它%
行()
突变(一=得到它(var2)[[1]],
二=得到它(var2)[[2]]
来源:本地数据帧[5 x 4]
组:
var1 var2一二
(dbl)(fctr)(chr)(内部)
1{“财产1”:“价值1”,“财产2”:5}5
2{“不动产1”:“val2”,“不动产2”:8}val2 8
3{“财产1”:“val3”,“财产2”:7}val3 7
4{“property1”:“val4”,“property2”:0}val4 0
5{“不动产1”:“val5”,“不动产3”:9}val5 9

这并不是你想要的一切,但也许更好

library("dplyr")
library("jsonlite")

get_it <- function(x) {
  jsonlite::fromJSON(as.character(x))
}

tbl_df(test) %>%
  rowwise() %>%
  mutate(one = get_it(var2)[[1]],
         two = get_it(var2)[[2]])

Source: local data frame [5 x 4]
Groups: <by row>

   var1                                  var2   one   two
  (dbl)                                (fctr) (chr) (int)
1     1 {"property1": "val1", "property2": 5}  val1     5
2     2 {"property1": "val2", "property2": 8}  val2     8
3     3 {"property1": "val3", "property2": 7}  val3     7
4     4 {"property1": "val4", "property2": 0}  val4     0
5     5 {"property1": "val5", "property3": 9}  val5     9
库(“dplyr”)
图书馆(“jsonlite”)
得到它%
行()
突变(一=得到它(var2)[[1]],
二=得到它(var2)[[2]]
来源:本地数据帧[5 x 4]
组:
var1 var2一二
(dbl)(fctr)(chr)(内部)
1{“财产1”:“价值1”,“财产2”:5}5
2{“不动产1”:“val2”,“不动产2”:8}val2 8
3{“财产1”:“val3”,“财产2”:7}val3 7
4{“property1”:“val4”,“property2”:0}val4 0
5{“不动产1”:“val5”,“不动产3”:9}val5 9

这并不是你想要的一切,但也许更好

library("dplyr")
library("jsonlite")

get_it <- function(x) {
  jsonlite::fromJSON(as.character(x))
}

tbl_df(test) %>%
  rowwise() %>%
  mutate(one = get_it(var2)[[1]],
         two = get_it(var2)[[2]])

Source: local data frame [5 x 4]
Groups: <by row>

   var1                                  var2   one   two
  (dbl)                                (fctr) (chr) (int)
1     1 {"property1": "val1", "property2": 5}  val1     5
2     2 {"property1": "val2", "property2": 8}  val2     8
3     3 {"property1": "val3", "property2": 7}  val3     7
4     4 {"property1": "val4", "property2": 0}  val4     0
5     5 {"property1": "val5", "property3": 9}  val5     9
库(“dplyr”)
图书馆(“jsonlite”)
得到它%
行()
突变(一=得到它(var2)[[1]],
二=得到它(var2)[[2]]
来源:本地数据帧[5 x 4]
组:
var1 var2一二
(dbl)(fctr)(chr)(内部)
1{“财产1”:“价值1”,“财产2”:5}5
2{“不动产1”:“val2”,“不动产2”:8}val2 8
3{“财产1”:“val3”,“财产2”:7}val3 7
4{“property1”:“val4”,“property2”:0}val4 0
5{“不动产1”:“val5”,“不动产3”:9}val5 9
您可以执行以下操作:

library(plyr)
library(jsonlite)

ll = lapply(df$var2, function(x) jsonlite::fromJSON(as.character(x)))
cbind(df, ldply(ll, data.frame))

#  var1                                  var2 property1 property3 property2
#1    a {"property1": "val1", "property3": 8}      val1         8        NA
#2    a {"property1": "val1", "property2": 5}      val1        NA         5
数据:

df = structure(list(var11 = structure(c(1L, 1L), .Label = "a", class = "factor"), 
var2 = structure(1:2, .Label = c("{\"property1\": \"val1\", \"property3\": 8}", 
"{\"property1\": \"val1\", \"property2\": 5}"), class = "factor")), .Names = c("var1", 
"var2"), class = "data.frame", row.names = 1:2)
你可以做:

library(plyr)
library(jsonlite)

ll = lapply(df$var2, function(x) jsonlite::fromJSON(as.character(x)))
cbind(df, ldply(ll, data.frame))

#  var1                                  var2 property1 property3 property2
#1    a {"property1": "val1", "property3": 8}      val1         8        NA
#2    a {"property1": "val1", "property2": 5}      val1        NA         5
数据:

df = structure(list(var11 = structure(c(1L, 1L), .Label = "a", class = "factor"), 
var2 = structure(1:2, .Label = c("{\"property1\": \"val1\", \"property3\": 8}", 
"{\"property1\": \"val1\", \"property2\": 5}"), class = "factor")), .Names = c("var1", 
"var2"), class = "data.frame", row.names = 1:2)
你可以做:

library(plyr)
library(jsonlite)

ll = lapply(df$var2, function(x) jsonlite::fromJSON(as.character(x)))
cbind(df, ldply(ll, data.frame))

#  var1                                  var2 property1 property3 property2
#1    a {"property1": "val1", "property3": 8}      val1         8        NA
#2    a {"property1": "val1", "property2": 5}      val1        NA         5
数据:

df = structure(list(var11 = structure(c(1L, 1L), .Label = "a", class = "factor"), 
var2 = structure(1:2, .Label = c("{\"property1\": \"val1\", \"property3\": 8}", 
"{\"property1\": \"val1\", \"property2\": 5}"), class = "factor")), .Names = c("var1", 
"var2"), class = "data.frame", row.names = 1:2)
你可以做:

library(plyr)
library(jsonlite)

ll = lapply(df$var2, function(x) jsonlite::fromJSON(as.character(x)))
cbind(df, ldply(ll, data.frame))

#  var1                                  var2 property1 property3 property2
#1    a {"property1": "val1", "property3": 8}      val1         8        NA
#2    a {"property1": "val1", "property2": 5}      val1        NA         5
数据:

df = structure(list(var11 = structure(c(1L, 1L), .Label = "a", class = "factor"), 
var2 = structure(1:2, .Label = c("{\"property1\": \"val1\", \"property3\": 8}", 
"{\"property1\": \"val1\", \"property2\": 5}"), class = "factor")), .Names = c("var1", 
"var2"), class = "data.frame", row.names = 1:2)

如果答案适合你,考虑投票/标记。如果答案适合你,考虑投票/标记。如果答案适合你,考虑投票/标记。如果答案适合你,考虑投票/标记。你的解决方案似乎起作用(它做了我的样本代码所期望的)。我怀疑我的完整数据集无法使用它,因为它无法处理属性集为空的情况。我最终在DB查询中提取了所需的属性,我也怀疑这最终会快得多。我怀疑我的完整数据集无法使用它,因为它无法处理属性集为空的情况。我最终在DB查询中提取了所需的属性,我也怀疑这最终会快得多。我怀疑我的完整数据集无法使用它,因为它无法处理属性集为空的情况。我最终在DB查询中提取了所需的属性,我也怀疑这最终会快得多。我怀疑我的完整数据集无法使用它,因为它无法处理属性集为空的情况。我最终在DB查询中提取了所需的属性,我也怀疑这最终会快得多。