2017-10-14 27 views
-1

我已经将一个CSV文件导入R.它生成8列。它有200行(或观察)我的所有相关数据都在第5行中的一个单一字符“变量”。下面是从5行中的一个观察一个示例:从一个长字符串中抽取多种类型的变量

{"answers":{"#userdefined-7fb430bc-3615-0373-89c6-e155172da89c":6,"attachedVsSorrowful":1,"dysregulation":0,"note":"I had a lovely day","skills":[0,1,3,4,5,6,9,10,11,12,14,15,18,19,21]},"date":1.4878944e+12... 

我喜欢创建即标签的数据帧:

c("attachedVsSorrowful","dysregulation"......) 
  • 我需要提取:序,矩阵中,字符串和日期格式可变

所以2个问题:

  1. 我使用哪些软件包和R命令?
  2. 你能指点我相关的资源,我可以学习这样做吗?

Tidyr/dplyr会是一个可行的选择吗?

回答

2

看起来你的变量是Json格式。 JSON来自世界的javascript:​​

但也有R封装阅读JSON:https://cran.r-project.org/web/packages/jsonlite/vignettes/json-aaquickstart.html

js <- jsonlite::fromJSON('{"answers":{"#userdefined-7fb430bc-3615-0373-89c6-e155172da89c":6,"attachedVsSorrowful":1,"dysregulation":0,"note":"I had a lovely day","skills":[0,1,3,4,5,6,9,10,11,12,14,15,18,19,21]},"date":1.4878944e+12}' 
         , simplifyVector = FALSE) 

str(js) 
'data.frame': 1 obs. of 20 variables: 
$ answers..userdefined.7fb430bc.3615.0373.89c6.e155172da89c: int 6 
$ answers.attachedVsSorrowful        : int 1 
$ answers.dysregulation         : int 0 
$ answers.note            : chr "I had a lovely day" 
$ answers.skills.0L          : int 0 
$ answers.skills.1L          : int 1 
$ answers.skills.3L          : int 3 
$ answers.skills.4L          : int 4 
$ answers.skills.5L          : int 5 
$ answers.skills.6L          : int 6 
$ answers.skills.9L          : int 9 
$ answers.skills.10L          : int 10 
$ answers.skills.11L          : int 11 
$ answers.skills.12L          : int 12 
$ answers.skills.14L          : int 14 
$ answers.skills.15L          : int 15 
$ answers.skills.18L          : int 18 
$ answers.skills.19L          : int 19 
$ answers.skills.21L          : int 21 
$ date              : num 1.49e+12 
+0

一个进一步澄清需要:我有一个CSV 8行文件。所以它只是包含这个子格式的行之一,其余的可能很容易添加,一旦我有数据框准备就绪。任何人都可以向我指出如何在同一个数据框中获得所有观察结果。提出的解决方案是用于取出一个观察结果。同样,当我使用jasonlite解决方案时,它将观察值相乘,因为其中一个变量“技能”是一个向量,乘以的数字是向量中关闭变量的数量。如何避免这种情况? –

+0

使用simplifyVector = FALSE标志。我已经编辑了答案;) –

+0

明白了 - 太棒了!那是有效的,太棒了,Thx Fabian:0)但是,我从一个有200种观察结果的CSV文件开始,我甚至有多个主题回答。因此,有20个参赛项目的这项观察需要乘以250天,并且80个项目回答。您可以指向一个代码或可行的策略,以便将所有这些放入数据框 –