Выберите переменные с разными именами - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть несколько DF с разными именами переменных, но они имеют одинаковое содержимое. К сожалению, мои файлы не имеют шаблонов, но сейчас я пытаюсь их стандартизировать. Например, у меня есть эти 4 DF, и я хотел бы выбрать только одну переменную:

KEY_WIN <- c(123,456,789)
COUNTRY <- c("USA","FRANCE","MEXICO")
DF1 <- data.frame(KEY_WIN,COUNTRY)

KEY_WINN <- c(12,55,889)
FOOD <- c("RICE","TOMATO","MANGO")
CAR <- c("BMW","FERRARI","TOYOTA")
DF2 <- data.frame(KEY_WINN,FOOD,CAR)

ID <- c(555,698,33)
CITY <- c("NYC","LONDON","PARIS")
DF3 <- data.frame(ID,CITY)

NUMBER <- c(3,436,1000)
OCEAN <- c("PACIFIC","ATLANTIC","INDIAN")
DF4 <- data.frame(NUMBER,OCEAN)

Я хотел бы создать подпрограмму для выбора только переменных KEY_WIN, KEY_WINN, ID, NUMBER. Мой ожидаемый результат будет:

DF_FINAL<- data.frame(KEY=c(123,456,789, 12,55,889, 555,698,33, 3,436,1000))

Как бы я выбрал только эти переменные?

1 Ответ

1 голос
/ 17 февраля 2020

Я мог бы представить, что вы можете подойти к этому несколькими способами.

Сначала вы можете поместить свои фреймы данных в список:

listofDF <- list(DF1, DF2, DF3, DF4)

Затем вы можете bind_rows добавьте вместе фреймы данных, а затем coalesce, чтобы объединить их в один столбец.

library(tidyverse)

bind_rows(listofDF) %>%
  mutate(KEY = coalesce(KEY_WIN, KEY_WINN, ID, NUMBER)) %>%
  select(KEY)

    KEY
1   123
2   456
3   789
4    12
5    55
6   889
7   555
8   698
9    33
10    3
11  436
12 1000

Если бы вы знали, что первый столбец 1012 * всегда был вашим столбцом KEY, вы могли бы просто do:

KEY = unlist(lapply(listofDF, "[[", 1))

Это извлечет первый столбец из всех ваших фреймов данных:

 [1]  123  456  789   12   55  889  555  698   33    3  436 1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...