【问题标题】:Fill missing values in R data frame without losing row names and column names? [duplicate]填充 R 数据框中的缺失值而不丢失行名和列名? [复制]
【发布时间】:2018-07-23 10:10:52
【问题描述】:

我有 2 个 R 数据框。

df1 <- data.frame(a = c(1, 2, NA), b = c(10, NA, 2), c = c(NA, NA, 1))
df2 <- data.frame(a = c(NA, NA, 3), b = c(NA, 5, NA), c = c(6, NA, NA))

df1 中的值是 NA 中的 df2,反之亦然。两个数据帧中的一些值都是NA。我想创建一个新的数据框,它的值来自 df1 和 df2,无论值在哪里,都不会丢失列名和行名。

我能想到的一个简单解决方案是使用for 循环。

df_merged <- df1

for(i in 1:nrow(df_merged)){
  for(j in 1:ncol(df_merged)){
    if(is.na(df_merged[i,j])){
      df_merged[i,j] = df2[i,j]
    }
  }
}

最后,df_merged 就是这个

df_merged
  a  b  c
1 1 10  6
2 2  5 NA
3 3  2  1

我知道for 循环在 R 中非常慢。有没有更好的解决方案?

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    试试吧:

    df1[is.na(df1)]<-df2[is.na(df1)]
    df1
    #  a  b  c
    #1 1 10  6
    #2 2  5 NA
    #3 3  2  1
    

    【讨论】:

    • 感谢您提供如此优雅的解决方案 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2020-03-24
    相关资源
    最近更新 更多