Как разбить таблицу по повторяющемуся символу в первой строке в R? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытался разделить эту таблицу по избыточным заголовкам таблиц из исходного файла .txt, чтобы я мог сгруппировать данные по этим таблицам.

Gen <- read.delim(directory, sep = " ", header = FALSE, col.names = c("ID1", 
       "ID2", "type", "locus", "s", "dominance", "pop.", "Generation", 
       "prevalence", "Samp_Gen"), colClasses = c("character", "character", 
       "factor", "character", "numeric", "numeric", "character", "numeric", 
       "numeric", "numeric"))
Gen <- split(Gen, Gen$ID1=="Mutations")

Не очень хорошая попытка, которую я знаю, но я не могу найти информацию, относящуюся к моему конкретному сценарию. Так как же разделить таблицу по повторяющимся символам в первом столбце? Вот как выглядит мой текущий фрейм данных после использования read.delim ():

  ID1 ID2 type locus s     dominance pop. Generation prevalence Samp_Gen
1         #OUT: 1000    A /Users/tristan/Documents/SLiM_1/Results.txt      
2      Version:    
3  Populations:                                                           
4            p1  100    H                                                   
5    Mutations:                                                             
6  1 5418 m6   21469 -0.0200 0.5      p1      908         46       NA
7  2 5499 m1      68 1.0000  0.5      p1      920         154      NA
> 

и вот str () всего объекта:

> str(Gen)
'data.frame':   346355 obs. of  10 variables:
$ ID1       : chr  "#OUT:" "Version:" "Populations:" "p1" ...
$ ID2       : chr  "1000" "3" "" "100" ...
$ type      : Factor w/ 169 levels "","0","1","10",..: 56 1 1 57 1 66 58 58 
+ 67 61 ...
$ locus     : chr  "/Users/tristan/Documents/SLiM_1/Results.txt" "" "" "" 
+ ...
$ s         : num  NA NA NA NA NA -0.02 1 1 -0.04 0 ...
$ dominance : num  NA NA NA NA NA 0.5 0.5 0.5 0.5 0.5 ...
$ pop.      : chr  "" "" "" "" ...
$ Generation: num  NA NA NA NA NA 908 920 921 927 934 ...
$ prevalence: num  NA NA NA NA NA 46 154 46 13 9 ...
$ Samp_Gen  : num  NA NA NA NA NA NA NA NA NA NA ...
> 

Спасибо, Тристан каждая таблица в файле имеет разную длину, и в ней ровно 1000 таблиц, в последнем столбце я хотел бы иметь номер таблицы

1 Ответ

0 голосов
/ 01 ноября 2018

если ваши столбцы разделены пробелом, вы можете попробовать read.table(directory,sep = " ")

но в целом я бы посоветовал использовать fread, который является более надежным.

library(data.table)
df <- fread(directory)

Я полагаю, что directory относится к файлу .txt или .csv, который вы хотите правильно прочитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...