【问题标题】:How to combine dataframes by columns? [duplicate]如何按列组合数据框? [复制]
【发布时间】:2017-06-27 21:13:53
【问题描述】:

我有两个数据框,它们看起来像:

df <- data.frame(
  A = c(19, 79, 34),
  B = c(21, 21, 14),
  C = c(17, 14, 57)
)
row.names(df) <- c("2016-10-31",    "2016-09-30",   "2016-08-31")
df
            A  B  C
2016-10-31 19 21 17
2016-09-30 79 21 14
2016-08-31 34 14 57

df2 <- data.frame(
  A_Return = c(0.1, 0.9,    0.4),
  B_Return = c(0.1, 0.2, 0.4),
  C_Return = c(0.7, 0.4, 0.7)
)
row.names(df2) <- c("2016-10-31",   "2016-09-30",   "2016-08-31")
df2
           A_Return B_Return C_Return
2016-10-31      0.1      0.1      0.7
2016-09-30      0.9      0.2      0.4
2016-08-31      0.4      0.4      0.7

数据框具有相同的行名,我知道cbindmerge 可以将它们组合在一起。但我希望列按以下顺序:

            A  A_Return  B  B_Return  C  C_Return
2016-10-31 19      0.1  21       0.1 17       0.7
2016-09-30 79      0.9  21       0.2 14       0.4
2016-08-31 34      0.4  14       0.4 57       0.7

【问题讨论】:

    标签: r cbind


    【解决方案1】:

    我们可以通过row.names 做一个merge

    dfN <- merge(df, df2, by = "row.names")
    row.names(dfN) <- dfN$Row.names
    dfN1 <- dfN[-1][order(colnames(dfN)[-1])]
    

    【讨论】:

    • 这只会合并两个数据帧。我正在寻找的是在A 旁边有A_Return 和在b 旁边有B_Return 等。
    • @T-T 更新帖子
    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 2022-11-13
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    相关资源
    最近更新 更多