【问题标题】:calculating new columns with NA in starting columns在起始列中计算具有 NA 的新列
【发布时间】:2023-01-11 23:14:25
【问题描述】:

我有data.frame(col1 = 1:4, col2 = c(NA,1,2,3), col3 = 5:8)

并希望创建额外的列,这些列基于涉及其中包含 NA 的其他列的计算,但结果继续得到 NA。我不想看到 NA,但想看到 1,基于df %>% mutate( new = .[[1]] + .[[2]])

任何建议如何解决这个问题?我宁愿继续使用 tidyverse 和 dplyr

【问题讨论】:

  • 你要df %>% mutate(new = rowSums(.[1:2], na.rm = TRUE))
  • 还有列差异,df %>% mutate( new = .[[1]] - .[[2]])df %>% mutate( new2 = .[[2]] - .[[1]])
  • 那么在那种情况下你可以用零替换 NAs
  • 但最后想显示NA

标签: r sum na calculated-columns


【解决方案1】:

这是一个可能的框架:replace NA 为 0,进行计算,然后使用 rows_update 替换原来的 NA。

library(dplyr)
df %>% 
  replace(is.na(.), 0) %>% 
  mutate(new = .[[1]] - .[[2]]) %>% 
  rows_update(df)

  col1 col2 col3 new
1    1   NA    5   1
2    2    1    6   1
3    3    2    7   1
4    4    3    8   1

【讨论】:

  • 谢谢,从来不知道 dplr 中的 rows_update() 函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 2022-11-17
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多