2014-11-14 74 views
2

我认为这是经验丰富的程序员一直在做的事情。但是,由于我的编程经验有限,请耐心等待。从字符串解析数据

我有其具有读取特定单元格条目excel文件

[[{ “从”: “4”, “响应”:真 “值”:20},{ “从” :“8”,“响应”:true,“value”:20},{“from”:“9”,“response”:true,“value”:20},{“from”:“3”响应“:true,”value“:20}],[{”from“:”14“,”response“:false,”value“:20},{”from“:”15“,”response“:true ,“value”:20},{“from”:“17”,“response”:false,“value”:20},{“from”:“13”,“response”:true,“value”:20 }]]

现在,对于每个这样的条目,我想要在每个cu使用括号括起来,并从中取出一行数据。每个这样的行将有3列。例如,大括号内的第一个条目形成的行应分别具有条目“4”“true”和“20”。我发布的部分应该给我6个这样的行,对于n次这样的重复,我应该以6n行和4列(标识符,加上提到的3列)为矩阵。

什么是最有效的方法来做到这一点?通过“这样做”我的意思是学习这个技巧,然后实施它。我可以在我的实验室中访问不少软件包(Excel,Stata,Matlab,R),所以这不应该成为问题。

+0

欢迎来到SO!请在你的问题范例中包括你已经尝试过的事情以及你已经尝试解决你的问题的研究,这将帮助我们为你制定一个好的答案:) – user1759942 2014-11-14 22:54:15

+0

第四列的标识符来自哪里?我没有看到你的数据。由于该文件已经在Excel中,并且由于单元格内容看起来很好,我只是使用正则表达式来解析数据;一个用户定义的对象和集合将它们聚集在一起,然后将输出放在新的工作表上。 – 2014-11-15 02:25:29

回答

3

这看起来像一个JSON样式文件。你得到的实际上是两个数据对象的列表。我们可以用jsonlite包将它们变成R数据帧。试试这个:

txt <- '[[{"from": "4", "response": true, "value": 20}, {"from": "8", "response": true, "value": 20}, {"from": "9", "response": true, "value": 20}, {"from": "3", "response": true, "value": 20}], [{"from": "14", "response": false, "value": 20}, {"from": "15", "response": true, "value": 20}, {"from": "17", "response": false, "value": 20}, {"from": "13", "response": true, "value": 20}]]' 

library(jsonlite) 
rbind.pages(fromJSON(txt)) ## just fromJSON(txt) for the list 
# from response value 
# 1 4  TRUE 20 
# 2 8  TRUE 20 
# 3 9  TRUE 20 
# 4 3  TRUE 20 
# 5 14 FALSE 20 
# 6 15  TRUE 20 
# 7 17 FALSE 20 
# 8 13  TRUE 20 

如果这是在一个文件中,并且该文件被称为例如"new.txt",那么你可以使用

rbind.pages(fromJSON(readLines("new.txt"))) 
+0

我在CRAN上找不到一个包rjsonlite,但他们确实有一些名为rjson的东西。 – Juanito 2014-11-14 23:09:21

+0

谢谢,我试过这样做。输入: install.packages(“jsonlite”) 输出: install.packages(“jsonlite”)中的警告: 参数'lib'丢失:使用'C:\ Users \ Econ Grad \ Documents/R/win -library/2.8' 警告:无法访问存储库索引http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.8 警告消息: 包'jsonlite'不是可用 – Juanito 2014-11-14 23:18:19

+0

pak的想法是对的。当我在我的个人笔记本电脑上重新安装最新的R软件包时,我可以安装jsonlite并且代码运行良好。感谢您的回复,我会研究代码,如果再次陷入某处,可能会再次问您。 – Juanito 2014-11-15 09:58:46