У меня есть список из 140 фреймов данных, каждый из которых имеет разное количество строк и столбцов. Единственное, что у них общего, - это то, что у них sample ID
как имена строк и years
как столбцы. Годы находятся между 1400-2018, и разные фреймы данных имеют выборки в разные периоды времени между этими датами Следовательно, некоторые столбцы совпадают (т.е. все кадры данных имеют значения в эти годы), а другие нет (например, только 1 или 2 кадра данных имеют значения в эти годы). Пример фрейма данных показан ниже:
> dput(shell[[20]])
list(structure(list(`1847` = c(NA, NA, NA, NA, NA, NA, NA, 1.33,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
), `1848` = c(NA, NA, NA, NA, NA, NA, 1.86, 1.46, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), `1849` = c(NA,
NA, NA, NA, NA, NA, 1.75, 1.5, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA), `1850` = c(NA, NA, NA, NA, NA,
NA, 1.7, 1.23, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
...
Я хочу объединить эти фреймы данных так, чтобы имена строк были сохранены (то есть просто вставлены их друг под другом), и значения в столбцах были сопоставлены - т.е. если данный образец имеет значения в диапазоне 1650-1700, они сохраняются, а для years
, где этот образец не имеет значения, NA
Мне также нужны годы, чтобы следовать от самого раннего до настоящего времени. Итак, я хочу, чтобы это выглядело так:
.. 1847 1848 1849 ...
S1 NA NA NA
S2 12.5 3.5 4.5
S3 NA NA 12.5
Я пытался сделать это с bind_rows
и rbind.fill
, и это работает для некоторых столбцов, но не для других - у меня есть некоторые очень странные столбцы (например, имена столбцов -150
в середине данных).
Что я мог сделать не так?