【问题标题】:Union dataframes in some way that updates rows with same row.name以某种方式合并数据框,以更新具有相同 row.name 的行
【发布时间】:2018-08-08 13:47:07
【问题描述】:

我想合并两个数据框,它们共享一些具有相同行名的行。对于那些具有共同行名的行,我想考虑第二个数据框值,而不是第一个。例如:

df1 <- data.frame(col1 = c(1,2), col2 = c(2,4), row.names = c("row_1", "row_2"))
df1
#       col1 col2
# row_1    1    2
# row_2    2    4

df2 <- data.frame(col1 = c(3,6), col2 = c(10,99), row.names = c("row_3", "row_2"))
df2
#       col1 col2
# row_3    3    6
# row_2    10  99

我想得到的结果是:

someSpecificRBind(df1,df2, takeIntoAccount=df2)
#       col1 col2
# row_1    1    2
# row_2    10  99
# row_3    3    6

函数 rbind 不能完成这项工作,实际上它会更新常用行名。

【问题讨论】:

    标签: r dataframe rbind rowname


    【解决方案1】:

    我会将此概念化为仅将 df2 添加到 df1 中尚不存在的行:

    rbind(df2, df1[setdiff(rownames(df1), rownames(df2)), ])
    

    【讨论】:

    • 太好了,它也能胜任
    【解决方案2】:

    我们得到duplicated元素的索引并将其用于filter

    rbind(df2, df1)[!duplicated(c(row.names(df2), row.names(df1))),]
    

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 2021-03-06
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多