全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2058 8
2018-03-13
3.jpg
4.jpg
我要要转换成 数据框

simnum

carid

carnum

64959409512

999593

鄂A21N65

64959426194

1010852

鄂A3QD28

64959433733

999596

鄂A55LN8

原数据我保存为.json 文档  在下面下载
carlist.rar
大小:(1.39 KB)

 马上下载

本附件包括:

  • carlist.json


CarList.rar
大小:(1.59 KB)

 马上下载

本附件包括:

  • CarList.RData

(含有R环境数据文件)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-3-13 13:36:26
library(RJSONIO)

fromJSON("e:/carlist.json",encoding = "utf-8") -> the_carlist_json

sapply(the_carlist_json,unlist) -> carlist
carlist[row.names(carlist)=="SimNum"] -> SimNum
carlist[row.names(carlist)=="CarId"] -> CarId
carlist[row.names(carlist)=="CarNum"] -> CarNum

data.frame(SimNum,CarId,CarNum,stringsAsFactors = F) -> carlist_sheet
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-3-13 14:03:31
把你的json文件的头部“{Rows:”和尾部“}”删除,再存档,再用jsonlite::fromJSON()读取,就是你要的data.frame格式了。
如果你R环境中的对象比较复杂,你直接用save(carlist, file = "carlist.RData")函数存为“carlist.RData”文件,然后打包上传吧。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-3-13 14:06:18
直接可以用RJSONIO包读,其实没那么复杂。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-3-13 15:14:41
cheetahfly 发表于 2018-3-13 14:03
把你的json文件的头部“{Rows:”和尾部“}”删除,再存档,再用jsonlite::fromJSON()读取,就是你要的data. ...
我上传了含有R 环境的对象 文件, CarList
除掉 “{Rows:”和尾部“}” jsonlite::fromJSON()是可以正常的解析,转成数据框。
但我是从网站上POST获取的数据, 批量获取,没获取一份数据就去掉 “{Rows:”和尾部“}”太麻烦。

我是这样获取数据的
GetCurrentCarList <- POST(str_c(topgps_url,GetCurrentCarList_url),
                          add_headers(.headers = headers),
                          set_cookies(.cookies = cookies),
                          body = payload, encode ="form", verbose())   # POST方式,获取车辆列表
CarList <- GetCurrentCarList %>%
  content("raw") %>%
  str_conv("utf-8")
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-3-13 15:55:55
stike6000 发表于 2018-3-13 14:06
直接可以用RJSONIO包读,其实没那么复杂。
我参考 你转换list 为 data.frame 方法,可行。
我是获取 一个GPS站点的车辆gps数据, POST回的几种数据(主要是各种查询参数下返回的json数据)

如我查询 “车辆行车明细”:
DrivingStat <- POST(str_c(topgps_url,DrivingStat_url),
                    add_headers(.headers = headers),
                    set_cookies(.cookies = cookies),
                    body = DrivingStat_payload,
                    encode ="form", verbose(), accept_json())

drivingstat <- DrivingStat %>%
  content("raw") %>%     # 获得数据都是“raw”类
  
str_conv("utf-8")  %>%    # 转换二进制数据
  fromJSON() %>%           # 再读为json
  `[[`(2)            # 第二个list 是我要的数据
12.png
  读取的列表格式  就发现  他是将 一辆车的所有 信息 为 一个 列表, 这样 我就没法进行 统计 ;(比如  sum(traveltime) 等)-------
在你的 上面给出的 方法 是用unlist将它简化为生成一个包含x中所有原子组件的向量,再row.names设置数据框的行名称。
像这列表中 名称比较多
TIM截图20180313160429.png
要转换成行名称 能让它自动识别的方法吗?
或是:直接转换成数据框?
R环境中的对象比较复杂我直接把这个变量保存为.RData 上传了
[attach]drivingstat.RData[/attach]

附件列表

drivingstat.rar

大小:2.08 KB

 马上下载

本附件包括:

  • drivingstat.RData

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群