Я импортирую много разных фреймов данных. Из-за того, что полевые работники используют разные обозначения, в столбце много разных синонимов. Это создает проблему, когда я связываю строки data.frames вместе, так как теперь существует много лишних столбцов для описания одного и того же. Иногда они просто ошибаются. Порядок и количество столбцов в каждом импорте различаются.
Например: PARCELL может быть написано PAR, PARC, PARCEL и т. Д. ROWNR может быть написано ROW, ROWNUMBER и т. Д.
Пример данных:
Поле 1
X1 BLOCK PARCELL ROW SORTNR FUKTIGH PLANTNR KONDI SKADA1 SKADA2 SKADA3 OVRIGT X13
<lgl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <lgl>
1 NA 1 1 1 13 3 1 1 NA NA NA NA NA
2 NA 1 1 1 13 3 2 1 NA NA NA NA NA
3 NA 1 1 1 13 3 3 1 NA NA NA NA NA
4 NA 1 1 1 13 3 4 3 513 NA NA NA NA
5 NA 1 1 1 13 3 5 1 NA NA NA NA NA
6 NA 1 1 1 13 3 6 1 NA NA NA NA NA
Поле 2
X1 BL PARC ROWNR SORTNR PLANTNR DOD85 KOND HOJD SKAD1 SKAD2 X12
<lgl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <lgl>
1 NA 1 1 1 17 1 0 1 87 NA NA NA
2 NA 1 1 1 17 2 0 1 83 NA NA NA
3 NA 1 1 1 17 3 0 1 67 NA NA NA
4 NA 1 1 1 17 4 0 1 77 NA NA NA
5 NA 1 1 1 17 5 0 1 50 151 NA NA
6 NA 1 1 1 17 6 0 1 59 151 NA NA
Конечно,вы можете обойти это, вручную анализируя каждое правильное имя при импорте данных, или используя dplyr :: rename, но, поскольку существует много разных типов импорта, это становится непрактичным.
У меня уже есть все мои data.frames вименованный список, data.frame.list, так что, возможно, было бы неплохо повторить это: lapply, for?
library(dplyr)
data.frame.list <- mget(ls(pattern="^F"))
finaldf <- data.frame.list %>% bind_rows(.id="id")
Я бы хотел иметь возможность предоставить R некоторые идентифицированные синонимы перед привязкой строк, чтобы можно было избежать ручной корректировки их для каждого элемента данных.
Мой ожидаемыйвывод будет выглядеть следующим образом:
PARCEL;ROWNR;
1; 1
1; 2
1; 3
1; 4
2; 1
2; 2
2; 3
Я не заинтересован в отслеживании того, как оригинальный полевой работник записал участок или строку. Меня интересует только наличие значений в правильном столбце.
TLDR;Хотите объединить данные со многими ошибочными столбцами, предпочтительно путем итерации привязки строк по списку и синтаксического анализа синонимов для объединения в один столбец - например,
PARCEL = c ("PAR", "PA", "PARCELL","PARCEL")
ROW = c ("ROW", "Row", "ROWNR", "ROWNUMBER")