相关疑难解决方法(0)

将Json文件读入没有嵌套列表的data.frame中

我正在尝试将json文件加载到r中的data.frame中.我对jsonlite包中的fromJSON函数运气不错 - 但我得到了嵌套列表,并且不确定如何将输入展平为二维data.frame.Jsonlite以data.frame的形式读取文件,但在一些变量中留下嵌套列表.

有人在使用嵌套列表读入时将任何JSON文件加载到data.frame有任何提示.

#*#*#*#*#*#*#*#*#*##*#*#*#*#*#*#*#*#*# HERE IS MY EXAMPLE #*#*#*#*#*#*#*#*#*##*#*#*#*#*#*#*#*#*#
# loads the packages
library("httr")
library( "jsonlite")

# downloads an example file
providers <- fromJSON( "http://fm.formularynavigator.com/jsonFiles/publish/11/47/providers.json" , simplifyDataFrame=TRUE ) 

# the flatten function breaks the name variable into three vars ( first name, middle name, last name)
providers <- flatten( providers )

# but many of the columns are still lists:
sapply( providers , class)

# Some of these lists have a single level
head( providers$facility_type )

# Some have …
Run Code Online (Sandbox Code Playgroud)

json r jsonlite

17
推荐指数
2
解决办法
6201
查看次数

R列表(结构(list()))到数据框

我有一个提供哈希列表的JSON数据源:

[
  { "a": "foo",
    "b": "sdfshk"
  },
  { "a": "foo",
    "b": "ihlkyhul"
  }
]
Run Code Online (Sandbox Code Playgroud)

fromJSON()rjson包中使用它将其转换为R数据结构.它返回:

list(
  structure(list(a = "foo", b = "sdfshk"), .Names = c("a", "b")),
  structure(list(a = "foo", b = "ihlkyhul"), .Names = c("a", "b"))
)
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为R数据帧,但data.frame()将其转换为具有四列而不是预期的2x2数据帧的单行数据帧.我缺少R-fu来进行从一个到另一个的转换,尽管它看起来应该是直截了当的.

奖励积分:

实际问题有点复杂,因为JSON数据源不像我上面显示的那样规则.它返回的对象类型不同.也就是说,每个中设置的字段可以是几种不同类型之一:

[
  { "a": "foo",
    "b": "asdfhalsdhfla"
  },
  { "a": "bar",
    "c": "akjdhflakjhsdlfkah",
    "d": "jfhglskhfglskd",
  },
  { "a": "foo",
    "b": "dfhlkhldsfg"
  }
]
Run Code Online (Sandbox Code Playgroud)

如您所见,每个对象中的"a"字段是一个类型标记,指示该对象将具有哪些其他字段.

我不太讲解解决方案是如何应对的.

如果两个对象类型只是在一起形成,那就不会太可怕了,所以你得到列a,b,c和d,并且这些行只有jSON 源对象没有给定值的值N/ANULL值领域.我相信我可以清理生成的数据框subset(df, …

json r type-conversion dataframe

9
推荐指数
1
解决办法
5563
查看次数

标签 统计

json ×2

r ×2

dataframe ×1

jsonlite ×1

type-conversion ×1