2014-10-21 2 views
-3

У меня есть CSV-файл, который является немного перемешалось, скажем:как преобразовать список текста в кадр данных в R

- Page 1 
- Hugh 
- Grant 
- First Name: 
- Last Name: 
- Age: 54 
- Movies: 
- Notting Hill 
- 4 Weddings & A Funeral 
- Music and Lyrics 
- Scarlett 
- Johansson 
- First Name: 
- Last Name: 
- Age: 29 
- Movies: 
- The Avengers 
- Chef 
- Lucy 
- Page 2 
- Mark 
- Wahlberg 
- First Name: 
- Last Name: 
- Age: 43 
- Movies: 
- Ted 
- Transformers: Age of Extinction 

Я хочу сделать это в таблицу, как следующее:

- First Name Last Name Age Movies 
- Hugh  Grant  54 Notting Hill, 4 Weddings & a Funeral, Music & Lyric 
- Scarlett Johansson 29 The Avengers, Chef, Lucy 
- Mark  Wahlberg 43 Ted, Transformers: Age of Extinction 

Как мне создать такой кадр данных в R? Обратите внимание, что исходный список имеет длину около 16000 (например, 16000 на 1 фрейм).

+3

А «маленький» вперемешку? Вы говорите, что это файл CSV, но на вашем входе нет разделителей. – A5C1D2H2I1M1N2O1R2T1

ответ

1

На основании полученных данных показал, вы можете попробовать

lines <- readLines("movies.txt") 
lines1 <- lines[!grepl("Page", lines)] 
indx <- grep("(First|Last|Age|Movies).*:$", lines1) 
indx1 <- grep("First.*:", lines1) 
indx2 <- grep("Movies:", lines1) 

m1 <- t(sapply(c(-1,-2, 3), function(i) lines1[indx1+i]))[c(2,1,3),] 
m2 <- t(sapply(1:3, function(i) lines1[indx2+i])) 
m3 <- rbind(m1, m2) 
library(stringr) 
dat <- data.frame(names= c(unique(lines1[indx]),rep('-', 2)), 
     matrix(str_trim(gsub("-","", m3)), nrow=6), stringsAsFactors=FALSE) 

dat 
#   names      X1   X2 
#1 - First Name:     Hugh  Scarlett 
#2 - Last Name:     Grant Johansson 
#3  - Age:      54   29 
#4  - Movies:   Notting Hill The Avengers 
#5    - 4 Weddings & A Funeral   Chef 
#6    -  Music and Lyrics   Lucy 
    #        X3 
#1       Mark 
#2      Wahlberg 
#3        43 
#4        Ted 
#5 Transformers: Age of Extinction 
#6       <NA> 
+0

Спасибо! Отличная помощь здесь! – alvinaloy

+0

@alvinaloy проблем нет. Рад, что это помогло. – akrun

Смежные вопросы