替换两个相邻列中的 NA 值

标签 r

您好,这是我正在使用的类似数据框的示例。我有一个包含 10 个样本和两个重复的实验

df <- data.frame("ID" = c(1,2,3,4,5,6,7,8,9,10),
                "Rep1" =  c(6,5,3,"Na","Na",9,4,"Na","Na",2),
                 "Rep2" = c(8,4,4,"Na",3,"Na",6,"Na",2,1))

我有不同的 Na 值,但是,我只想用样本 4 和 8 中的零替换它们,因为它们是唯一在两个重复中都具有 NA 的样本。然后,其他样本将保持“NA”。

最佳答案

您还可以使用以下解决方案。在以下解决方案中,我们遍历每一行并检测相应的索引或等于 Na 的索引,然后如果有多个索引,我们将其替换为 0否则该行将保持原样:

library(dplyr)
library(purrr)

df %>%
  pmap_df(., ~ {ind <- which(c(...) == "Na"); 
  if(length(ind) > 1) {
    replace(c(...), ind, "0")
  } else {
    c(...)
  } 
 }
) %>%
  mutate(across(ID, as.integer))

# A tibble: 10 x 3
      ID Rep1  Rep2 
   <int> <chr> <chr>
 1     1 6     8    
 2     2 5     4    
 3     3 3     4    
 4     4 0     0    
 5     5 Na    3    
 6     6 9     Na   
 7     7 4     6    
 8     8 0     0    
 9     9 Na    2    
10    10 2     1  

P.S = 我几乎要疯了,为什么我无法让它工作只是为了意识到你的 NA 实际上是 Na

关于替换两个相邻列中的 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67825863/

相关文章:

r - bool 运算中的 dplyr row_number() 行为

python - 如何在Python中向GLM添加总和为零约束?

r - 两个 .RData 文件打开时大小相同,但一个为 282 KB,另一个为 76 MB,这可能是什么原因?

c - C : Consult SEXP PROTECT Stack Height 中的 R 扩展

python - 如何创建与 R randomForest 相同的 sklearn 随机森林模型?

r - 如何在 SQL Server 非标准架构表上使用 dplyr tbl

r - 使用 as.numeric 函数后的 NULL 维度

r - 从列中提取模式并在 R 数据框中创建一个新模式

java - 是否有可能有一个可以执行 R 脚本的独立 spring boot jar ?

r - 使用scale_size_area,从顶部和底部添加线条到下一个区域点