在R中处理非结构化数据

时间:2019-01-28 23:16:15

标签: r structure

PSA:我不确定这是否属于主题/属于meta

新用户经常以其控制台上打印的版本发布其代码,例如

“这是我的数据:”

> data
   Num Data
 1   1    A
 2   2    B
 3   3    C
 4   4    D
 5   5    E
据我所知,这通常是痛苦的或无法复制的。 我是否缺少一种明显的方法,可以将非结构化数据转换为可再现的数据?(除了要求用户处理其数据外)

如果没有,我想考虑创建一个软件包来这样做。以下是此类程序包中存在的功能的不可靠,不鲁棒的示例。

Dump_to_DF<-function(dump){

test<-regmatches(dump
, gregexpr(".*\n|.*$",
dump, perl=TRUE))

test2<-unlist(test)

test3<-strsplit(test2, split="\\s+",perl = T)

len<-length(test3)

test5<-list()

for(i in 2:len){
    test4<-unlist(test3[[i]])
    test5[[i]]<-test4[-1]
    }

test5<-test5[-1]

Fin_Data<-do.call(rbind.data.frame, test5)

names(Fin_Data)<-test3[[1]]

return(Fin_Data)

}

data<-"Num Data
 1   1    A
 2   2    B
 3   3    C
 4   4    D
 5   5    E"

Data<-Dump_to_DF(data)

> Data
  Num Data
1   1    A
2   2    B
3   3    C
4   4    D
5   5    E

是否存在与该功能相似的功能?

对于任何想知道我动机的人,我讨厌等待,宁愿能够快速编辑一个新问题以包括可复制的数据,以便每个人都可以更快地处理答案。最终还可以让SO机器人使用类似的方法来建议编辑。

1 个答案:

答案 0 :(得分:2)

读取给定数据的一种方法是这样的:

data <- read.table(text="Num Data
         1   1    A
         2   2    B
         3   3    C
         4   4    D
         5   5    E")

如果有标题,则可能需要在命令中添加header=T