您好,这是我正在使用的类似数据框的示例。我有一个包含 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/