Объединить кадры данных из списка и получить имена столбцов данных в виде столбца - PullRequest
0 голосов
/ 20 марта 2019

Я объединил все фреймы данных из списка в один фрейм данных.

Фреймы данных внутри списка называются

TAI
NAM
HEE 

, и каждый фрейм данных выглядит следующим образом

Yr-M   Compound1 Compound 2
2015-01   0.002    0.15
2015-02   0.004    0.02
2015-03   0.01     0.09

, когда я объединяю все фреймы данных с meanall<-do.call(rbind, meaneach) Я получаю

         Yr-M  Compound1  Compound2
TAI.1   2015-01   0.002    0.15
TAI.2   2015-02   0.004    0.02
TAI.3   2015-03   0.01     0.09
  .
  .
  .
NAM.1   2015-01   0.03     0.4
NAM.2   2015-02   0.001    0.005

Я хотел бы получить столбец с именами списка, а не в виде имен строк (как выше) и без чисел (TAI.1, TAI.2 ...), я просто хочуимя TAI

Чтобы я получил это:

 List    Yr-M  Compound1  Compound2
  TAI   2015-01   0.002    0.15
  TAI   2015-02   0.004    0.02
  TAI   2015-03   0.01     0.09
  .
  .
  .
  NAM   2015-01   0.03     0.4
  NAM   2015-02   0.001    0.005

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Rownames вы не можете иметь дубликаты.Поэтому лучше всего преобразовать имена строк в столбец, а затем использовать gsub для удаления. [0-9], то есть

df <- do.call(rbind, your_list)
df$list_id <- gsub('\\..*', '', rownames(df))

Обратите внимание, что вы можете использовать dplyr или data.table версию.связывания списка, в котором есть возможность включения имен списков в виде столбца, например

dplyr::bind_rows(your_list, .id = 'list_id')
data.table::rbindlist(your_list, idcol = 'list_id')
0 голосов
/ 20 марта 2019

Вы можете добавить дополнительный столбец с именами списков после объединения трех списков с помощью do.call:

nameColumn <- data.frame(listName = c(rep(c('TAI','NAM','HEE'),
                                          c(length(TAI),length(NAM),length(HEE) ))
meanall <- cbind(meanall, nameColumn)

Если вы хотите, чтобы nameColumn был первым столбцом, просто переключите аргументы в cbind на

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