使用R将大型文本文件结构化为数据帧

使用R将大型文本文件结构化为数据帧,r,text,text-mining,R,Text,Text Mining,我有一个大约20页的文本文件,其中有大约200段。每一段包含三行文字,描述关于这样一个人的信息: Name: John Age: 26 Phone number: 123421 Name: Mary Age: 80 Phone number: NA ... 现在,我希望将这个大文件转换为一个数据框,其中的列表示三个变量名称、年龄和电话号码,其中的行对应于人员 Name Age Phone number John 26 123421 Mary

我有一个大约20页的文本文件,其中有大约200段。每一段包含三行文字,描述关于这样一个人的信息:

Name: John
Age: 26
Phone number: 123421

Name: Mary
Age: 80
Phone number: NA

...
现在,我希望将这个大文件转换为一个数据框,其中的列表示三个变量名称、年龄和电话号码,其中的行对应于人员

Name      Age      Phone number
John      26       123421
Mary      80       NA
...       ...      ...

如何将大型文本文件转换为这样的数据帧?

不太好,但这里有一个regex选项,它可能会根据数据的读入方式工作

test<-
"Name: John
Age: 26
Phone number: 123421

Name: Mary
Age: 80
Phone number: NA
"
现在使用正则表达式获取所有匹配项,始终捕获NA以确保行数相同:

Names<-regmatches(test, gregexpr("(?<=Name: )[a-zA-Z]+", test, perl=TRUE))

Numbers<-regmatches(test, gregexpr("(?<=Phone number: )[a-zA-Z0-9]+", test, perl=TRUE))

Age<-regmatches(test, gregexpr("(?<=Age: )[a-zA-Z0-9]+", test, perl=TRUE))

df<-data.frame(Names,Numbers,Age)
names(df)<-c("Name","Number","Age")

> df
  Name Number Age
1 John 123421  26
2 Mary     NA  80
如果您有姓氏,
names
参数的正则表达式也需要更改:

(?base R中的
read.dcf()
用于读取此类数据:

read.dcf(textConnection(test), all = TRUE)
DCF(“Debian控制文件”)格式的简要说明可在
帮助(“read.DCF”)
中找到

资料
测试类似问题:加载到R中后,您能给我们看一个数据结构的示例吗?该文件似乎是DCF格式的。这是一个很棒的软件包,我到目前为止还没有听说过,这应该是公认的答案。谢谢,@Chabo。该函数是基本R的一部分,因此不需要软件包。
test<-read.csv(text=test, header=F, stringsAsFactors=FALSE)
test<-list(test$V1)
test<-paste(unlist(test), collapse =" ")
>test
[1] "Name: John Age: 26 Phone number: 123421 Name: Mary Age: 80 Phone number: NA"
read.dcf(textConnection(test), all = TRUE)
  Name Age Phone number
1 John  26       123421
2 Mary  80           NA
test <-
"Name: John
Age: 26
Phone number: 123421

Name: Mary
Age: 80
Phone number: NA
"