我认为这是经验丰富的程序员一直在做的事情。但是,鉴于我有限的编程经验,请耐心等待。
我有一个excel文件,其中包含特定的单元格条目
[[{" from":" 4"," response":true," value":20},{&# 34;来自":" 8","回复":真实,"价值":20},{"来自":& #34; 9","回复":真实,"价值":20},{"来自":" 3", "回复":真实,"价值":20}],[{"来自":" 14","回复&# 34;:false," value":20},{"来自":" 15","响应":true,&#34 ;价值":20},{"来自":" 17","响应":false,"价值":20} ,{"来自":" 13","回复":真实,"价值":20}]]
现在,对于每个这样的条目,我想要获取每个大括号中的信息并从中生成一行数据。每个这样的行将有3列。例如,从大括号中的第一个条目形成的行应该具有条目" 4" "真"和" 20"分别。我发布的部分应该给我6个这样的行,对于n个这样的重复,我最终会得到一个6n行和4列的矩阵(一个标识符,再加上提到的3列)。
最有效的方法是什么?通过"做到这一点"我的意思是学习技巧,然后实施它。我可以在我的实验室访问相当多的软件包(Excel,Stata,Matlab,R),所以这应该不是问题。
答案 0 :(得分: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")))