Сшивание кадров данных вместе в R без переупорядочения столбцов каждого кадра данных - PullRequest
0 голосов
/ 21 октября 2018

В настоящее время я пытаюсь объединить три фрейма данных в R по вертикали, чтобы сохранить свои данные в чистоте.Проблема в том, что порядок каждого из кадров различен, и я не хочу, чтобы R переупорядочивал каждый столбец в соответствии с порядком столбцов в первом кадре данных.Фреймы данных выглядят примерно так:

df.1
        X1   X2   X3   X4
NA       A    B    C    D
200301   2    4    5    6
200302   4    5    8    9

df.2
        X3   X1   X3   X2     
NA       C    A    D    B
200401   3    1    5    7
200402   2    9    6    4

df.3
        X4   X3   X2   X1     
NA       D    C    B    A
200501   5    4    5    6
200502   8    2    3    8

И я хочу, чтобы они соединялись вертикально так, чтобы они выглядели так, очевидно, без меток столбцов между ними.По сути, я пытаюсь сделать то же самое, что просто скопировать и вставить кадры данных, расположенные один под другим.

df.4
        X1   X2   X3   X4    
NA       A    B    C    D
200301   2    4    5    6
200302   4    5    8    9
        X3   X1   X3   X2             
NA       C    A    D    B
200401   3    1    5    7
200402   2    9    6    4
        X4   X3   X2   X1
NA       D    C    B    A
200501   5    4    5    6
200502   8    2    3    8

Есть ли какой-нибудь возможный способ добиться этого?У меня был честный взгляд, и я не могу найти ничего, что могло бы сделать это для меня.Цени любую помощь!

1 Ответ

0 голосов
/ 21 октября 2018

NA, поскольку имена строк не поддерживаются, поэтому я добавил один столбец.

Идея состоит в том, чтобы сначала переименовать столбцы, а затем применить do.call и rbind:

dfs <- list(df.1, df.2, df.3)

dfs <- lapply(dfs, setNames, paste0("V",1:ncol(dfs[[1]])))
res <- do.call(rbind, dfs)
res
#       V1 V2 V3 V4 V5
# 1     NA  A  B  C  D
# 2 200301  2  4  5  6
# 3 200302  4  5  8  9
# 4     NA  C  A  D  B
# 5 200401  3  1  5  7
# 6 200402  2  9  6  4
# 7     NA  D  C  B  A
# 8 200501  5  4  5  6
# 9 200502  8  2  3  8

data

df.1 <- read.table(header=TRUE,stringsAsFactors=FALSE,text="X0 X1   X2   X3   X4
NA       A    B    C    D
200301   2    4    5    6
200302   4    5    8    9")

df.2 <- read.table(header=TRUE,stringsAsFactors=FALSE,text="X0 X3   X1   X3   X2     
NA       C    A    D    B
200401   3    1    5    7
200402   2    9    6    4")

df.3 <- read.table(header=TRUE,stringsAsFactors=FALSE,text="X0 X4   X3   X2   X1     
NA       D    C    B    A
200501   5    4    5    6
200502   8    2    3    8")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...