我有一个带有一些NA值的 Dataframe :
dfa <- data.frame(a=c(1,NA,3,4,5,NA),b=c(1,5,NA,NA,8,9),c=c(7,NA,NA,NA,2,NA))
dfa
我想用另一个 Dataframe 中相同位置的值替换NA:
dfrepair <- data.frame(a=c(2:7),b=c(6:1),c=c(8:3))
dfrepair
我试过:
dfa1 <- dfa
dfa1 <- ifelse(dfa == NA, dfrepair, dfa)
dfa1
但这不起作用。
5条答案
按热度按时间fnvucqvd1#
您可以:
ar7v8xwq2#
在tidyverse中,您可以使用
purrr::map2_df
,它是mapply
的严格二元版本,简化为data.frame,以及dplyr::coalesce
,它将第一个参数中的NA
值替换为第二个参数中的相应值。2hh7jdfx3#
我们可以使用
base R
中的Map
在两个数据集之间进行列比较8fsztsew4#
由于
dplyr
中的代码是用C++编写的,所以在大多数情况下速度更快。另一个重要的优点是,coalesce
以及许多其他dplyr
函数在SQL中是相同的。使用dplyr
,您可以通过用R
编写代码来学习SQL。-)t9aqgxwy5#
在有不同类型的情况下,替换应该按列进行。另一个允许就地交换的简单方法可能是。
或者另外使用
which
,这在某些情况下可能会提高速度/内存使用率。列式 base 选项的基准。