如果数据中的每一行被分开,是否有办法解析R中的数据?

时间:2014-09-29 20:42:21

标签: r

我目前有数据,每行都是分开的。我的目标是能够将所有行组合成一个整齐的数据表。数据目前在文本文件中如下所示:

{    "Name":"Person_1_Name"
     "Age":"15"
     }
{    "Name":"Person_2_Name"
     "Age":"25"
     } 
........

我想得到它看起来像:

Name                Age
Person_1_Name       15
Person_2_Name       25
.....

有没有办法在R中实现这个目标?我所知道的最粗糙的方法是编写一个搜索功能,但是想知道人们会不会知道另一种方式。谢谢!

2 个答案:

答案 0 :(得分:4)

如果数据实际上是这样的:

txt <- '[{    "Name":"Person_1_Name",
     "Age":"15"
     },
{    "Name":"Person_2_Name",
     "Age":"25"
     }]'

然后是以下内容:

library(rjson)
do.call(rbind, fromJSON(txt))

给出:

     Name            Age 
[1,] "Person_1_Name" "15"
[2,] "Person_2_Name" "25"

如果没有,那么先将它按到那个形状。

答案 1 :(得分:3)

不确定。如果这实际上是JSON格式,请使用库。但你也可以解析原始文本。

yr_data <-
'{    "Name":"Person_1_Name"
      "Age":"15"
      }
 {    "Name":"Person_2_Name"
      "Age":"25"
      }'

# split by line
yr_data <- unlist(strsplit(yr_data, '\n'))

# subset to only the lines with : in them
yr_data <- grep(':', yr_data, value=T)

# split on the colon
yr_data <- unlist(strsplit(yr_data, ':'))

# name is in every 2nd place, age in every 4th
data.frame(Name=yr_data[seq(2, length(yr_data), by=4)],
           Age=yr_data[seq(4, length(yr_data), by=4)])

输出:

  Name           Age
1 Person_1_Name  15
2 Person_2_Name  25