объединить .csvs на основе общего столбца, но непоследовательной длины - PullRequest
0 голосов
/ 06 марта 2019

Днем (или утром, вечером)

Я пытаюсь объединить несколько .csv файлов, которые имеют похожую разметку, у них есть класс в одном столбце (character) и изобилие (* 1005)*) в другом.

При импорте в качестве data.frame пример будет:

print(one[1:5,])
  X                            Class Abundance_inds
1 1                      Chaetognath              2
2 2     Copepod_Calanoid_Acartia_spp              9
3 3 Copepod_Calanoid_Centropages_spp              4
4 4      Copepod_Calanoid_Temora_spp              1
5 5         Copepod_Calanoid_Unknown             55 

Столбец класса ( количество строк и порядок ) изменяет каждый CSVосновываясь на том, что было найдено, и я хочу связать несколько (более 30) CSV-файлов на основе столбца класса, у меня было следующее (которое, я уверен, работало некоторое время назад .....):

DensityFiles <- list.files(CSVdirectory,
                           pattern = '.csv',
                           full.names = T)

Combined <- rbindlist(
  lapply(
    DensityFiles,
    fread),
  fill = TRUE,
  use.names = TRUE)

Это производит следующее:

str(Combined)    
Classes ‘data.table’ and 'data.frame':  461 obs. of  3 variables:

не совсем то, что я был после!Я ищу следующее:

> print(example)
    X                            Class CSV.NAME CSV.NAME.1
1   1                   Bivalve_Larvae        1          3
2   2                   Bryozoa_Larvae        4          6
3   3                      Chaetognath       NA          7
4   4                         Cnidaria        1          8
5   5     Copepod_Calanoid_Acartia_spp       22         NA
6   6     Copepod_Calanoid_Calanus_spp       24          4
7   7     Copepod_Calanoid_Candacia_sp        5          3
8   8 Copepod_Calanoid_Centropages_spp       41          2
9   9      Copepod_Calanoid_Temora_spp       39          8
10 10         Copepod_Calanoid_Unknown      458         NA
11 11  Copepod_Cyclopoid_Corycaeus_spp       46         NA
12 12    Copepod_Cyclopoid_Oithona_spp       NA          4
13 13     Copepod_Cyclopoid_Oncaea_spp       NA          7
14 14             Copepod_Harpacticoid       36         NA
15 15                  Copepod_Nauplii       12          9

Я могу получить имя CSV в заголовке столбца, используя idcol = "origin" при использовании data.table libary rbindlist.но не уверен, что это работает для всех решений.

У меня была хорошая охота, но большинство примеров, похоже, имеют дело с постоянным количеством строк,

любая помощь будет принята с благодарностью!

Джим

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете использовать readr и bind_rows

library(dplyr)
library(readr)
df <- do.call(bind_rows, lapply(DensityFiles,read_csv))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...