R - 将一个表转换为多个表

时间:2016-10-07 08:10:22

标签: r csv

我有一个名为data.csv的csv文件,其中包含3个仅合并为一个的表。当我将它导入R时,我想将它们分成3个不同的data.frame。 到目前为止,这是我在运行此代码后得到的结果:

df <- read.csv("data.csv")
View(df)
Student 
Name    Score
Maria   18
Bob     25
Paul    27
Region  
Country Score
Italy   65
India   99
United  88
Sub region  
City    Score
Paris   77
New     55
Rio     78

如何以这样的方式分割它们:

首先:

View(StudentDataFrame)
Name    Score
Maria   18
Bob     25
Paul    27

第二:

View(regionDataFrame)
Country Score
Italy   65
India   99
United  88

第三

View(SubRegionDataFrame)  
City    Score
Paris   77
New     55
Rio     78

1 个答案:

答案 0 :(得分:1)

一种选择是使用readLines读取数据集,根据“学生”的位置创建分组变量(&#39; grp&#39;),&#39;地区&#39;,&#39;子地区&#39;在&#39;行&#39;,split中,并使用read.table

阅读
i1 <- trimws(lines) %in% c("Student", "Region", "Sub region")
grp <- cumsum(i1)
lst <- lapply(split(lines[!i1], grp[!i1]), function(x)
             read.table(text=x, stringsAsFactors=FALSE, header=TRUE))
lst
#$`1`
#   Name Score
#1 Maria    18
#2   Bob    25
#3  Paul    27

#$`2`
#  Country Score
#1   Italy    65
#2   India    99
#3  United    88

#$`3`
#   City Score
#1 Paris    77
#2   New    55
#3   Rio    78

数据

lines <- readLines("data.csv")