R — Преобразование одной таблицы в несколько таблиц

#r #csv

#r #csv

Вопрос:

У меня есть файл csv data.csv , который содержит 3 таблицы, объединенные в одну. Я хотел бы разделить их на 3 разных data.frame при импорте в R. Пока это то, что я получил после запуска этого кода:

 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:

Одним из вариантов было бы прочитать набор данных с readLines помощью, создать группирующую переменную (‘grp’) на основе местоположения ‘Student’, ‘Region’, ‘Sub region’ в ‘lines’, 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")