read.table
with でfill=TRUE
それらを埋めることができます。names(DF2)<-
適切な列名が重要でない場合は、この行を省略できます。パッケージは使用されません。
# test data
Lines <- "pages count
[page 1, page 2, page 3] 23
[page 2, page 4] 4
[page 1, page 3, page 4] 12"
# code - replace text=Lines with something like "myfile.dat"
DF <- read.table(text = Lines, skip = 1, sep = "]", as.is = TRUE)
DF2 <- read.table(text = DF[[1]], sep = ",", fill = TRUE, as.is = TRUE)
names(DF2) <- paste0(read.table(text = Lines, nrow = 1, as.is = TRUE)[[1]], seq_along(DF2))
DF2$count <- DF[[2]]
DF2[[1]] <- sub(".", "", DF2[[1]]) # remove [
これにより、次のようになります。
> DF2
pages1 pages2 pages3 count
1 page 1 page 2 page 3 23
2 page 2 page 4 4
3 page 1 page 3 page 4 12
注: これにより、ページ1、ページ2などの列見出しが得られます。質問に表示されている列見出しを正確に表示することが重要な場合は、ページ列が20未満の場合にそれらの見出しを使用する行に置き換えてください。
ord <- c('First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth', 'Seventh',
'Eighth', 'Ninth', 'Tenth', 'Eleventh', 'Twelfth', 'Thirteenth',
'Fourteenth', 'Fiftheenth', 'Sixteenth', 'Seventeenth', 'Eighteenth',
'Nineteenth')
ix <- seq_along(DF2)
names(DF2) <- if (ncol(DF2) < 20) paste(ord[ix], "Page") else paste("Page", ix)