【问题标题】:R - replace specific values in df with values from other df by matching row namesR - 通过匹配行名将 df 中的特定值替换为其他 df 中的值
【发布时间】:2022-07-19 16:36:32
【问题描述】:

我有 df1:

df1 <- data.frame(X1 = c(2,5,1,5,4,6),
              X2 = c(1,4,2,5,2,9),
              X3 = c(8,4,2,6,3,8))
rownames(df1) <- rownames(df1) <- c("a","b","c","d","e","f")
  X1 X2 X3
a  2  1  8
b  5  4  4
c  1  2  2
d  5  5  6
e  4  2  3
f  6  9  8

和df2:

df2 <- data.frame(X1 = c(9,8,0),
              X2 = c(4,6,2),
              X3 = c(7,0,2)
rownames(df2) <- c("b","c","f")
  X1 X2 X3
b  9  4  7
c  8  6  0
f  0  2  2

我的目标是仅用 df2 的值更新 df1 中的值,其中它们的行名相同:

  X1 X2 X3
a  2  1  8
b  9  4  7
c  8  6  0
d  5  5  6
e  4  2  3
f  0  2  2

我觉得这应该很简单,但是我在论坛中找不到答案,也无法自己解决。

注意:df2 的所有行都存在于 df1 中

【问题讨论】:

    标签: r dataframe replace rowname


    【解决方案1】:

    试试

    df1[na.omit(match(rownames(df1), rownames(df2))),] <- df2
    
      X1 X2 X3
    a  9  4  7
    b  8  6  0
    c  0  2  2
    d  5  5  6
    e  4  2  3
    f  6  9  8
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 2021-10-24
      • 2019-12-22
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      相关资源
      最近更新 更多