选择名称不同的变量

时间:2020-02-17 14:13:28

标签: r select

我有一些使用不同变量名称的DF,但是它们具有相同的内容。不幸的是,我的文件没有模式,但是我现在正在尝试对其进行标准化。例如,我有这四个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 个答案:

答案 0 :(得分:1)

我想您可以通过多种方式来实现这一目标。

首先,您可以将数据框放在列表中:

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

如果您知道 first 列始终是您的KEY列,则可以执行以下操作:

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

这将从所有数据框中提取第一列:

 [1]  123  456  789   12   55  889  555  698   33    3  436 1000