2015-05-19 42 views
1

我的文本文件「myfile.txt」包含許多具有相同列(名稱,年齡,體重,職業)的表格。它看起來像:如何將一個文本文件中的多個表格轉換爲一個具有附加列的表格?

table_ID 001 
John | 38 | 165 | Computer scientist 
Mary | 22 | 122 | Student 

table_ID 002 
Patric| 44 | 105 | Teacher 
Kim | 56 | 155 | Salesman 
Kate | 33 | 133 | Student 
... 

table_ID 100 
Peter| 44 | 105 | Teacher 
Han | 56 | 155 | Salesman 
Ken | 33 | 133 | Student 

I want to output a data.frame with an additional column ("table_ID"), which looks like: 

table_ID name age weight profession 
001 John 38 165 Computer scientist 
001 Mary 22 122 Student 
002 Patric 44 105 Teacher 
002 Kim 56 155 Salesman 
002 Kate 33 133 Student 
... 

100 Peter 44 105 Teacher 
100 Han 56 155 Salesman 
100 Ken 33 133 Student 

如何在R中執行此操作?非常感謝。

+0

你有這個'|'在'myfile.txt的」 – akrun

+0

Akrun,感謝您的魔術!其實我的table_ID並不像上面顯示的那麼簡單,它們有點不規則:NM_000775,NM_001014975,NM_001080484等等。常見的是前面的字符串「table_ID」。你如何處理這種情況? –

+0

更新瞭解決方案。我複製/粘貼輸入數據並保存爲文件。它似乎爲我工作。希望它適用於您的原始數據 – akrun

回答

1

您可以嘗試

library(tidyr) 
lines <- readLines('paul.txt') 
indx <- grepl('table_ID', lines) 
lst <- split(lines, cumsum(indx)) 
names(lst) <- sub('\\D+', '', sapply(lst,`[`, 1)) 
res <- unnest(lapply(lst, function(x) 
    read.table(text=x[-1], header=FALSE, sep="|")), table_ID) 
相關問題