【问题标题】:Sum of data.frames ignoring some values忽略某些值的 data.frames 总和
【发布时间】:2017-02-27 15:32:12
【问题描述】:

对不起这个简单的问题,但我有一个例如 200 行和 69 列的 data.frame (df1),其中一些 NA 和一些值等于 35,另一个“data.frame”(df2) 为 200 行和 1没有 NA 的列。我想将 df2 与 df1 的每一列相加,当它是 NA 时留下 NA,当 df1 中的条目为 35 时留下 35。例如:

 df1    
Col1      Col2      Col3    
  5        35        21     
 NA        4         12      
 35        1         NA       
....      ....      ......

 df1    
Estimates     
  5     
  1      
  9       
 ...     

期望的输出:

 df1    
Col1      Col2      Col3    
 10        35        26     
 NA        5         13      
 35        10        NA       
....      ....      ......

谁能帮帮我?

提前致谢

【问题讨论】:

  • df1[] <- lapply(df1, `+`, df2$Estimates) 或使用矩阵:data.frame(as.matrix(df1) + df2$Estimates)
  • 但在 col2 中,您将 35 更改为 40 (35+5)...
  • 对不起!

标签: r


【解决方案1】:

一条路,

#create logical matrix of df1 == 35
m1 <- df1 == 35

df1[] <- lapply(df1, function(i) i+df2$Estimates)
df1[m1] <- 35
df1
#  Col1 Col2 Col3
#1   10   35   26
#2   NA    5   13
#3   35   10   NA

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2012-07-28
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多