R-如何基于
我有一个包含10个变量的数据框。对于变量1-9的每一列,如果该行的第十个变量是R-如何基于,r,replace,lapply,R,Replace,Lapply,我有一个包含10个变量的数据框。对于变量1-9的每一列,如果该行的第十个变量是NA,我想用NA替换这些值 在执行任何操作之前,数据如下所示: var1 var2 var3 ... var10 1 3 3 2 0 0 0 NA 9 3 7 4 0 0 0 NA . .
NA
,我想用NA
替换这些值
在执行任何操作之前,数据如下所示:
var1 var2 var3 ... var10
1 3 3 2
0 0 0 NA
9 3 7 4
0 0 0 NA
. . . .
. . . .
. . . .
var1 var2 var3 ... var10
1 3 3 2
NA NA NA NA
9 3 7 4
NA NA NA NA
. . . .
. . . .
. . . .
目标是使数据看起来像这样:
var1 var2 var3 ... var10
1 3 3 2
0 0 0 NA
9 3 7 4
0 0 0 NA
. . . .
. . . .
. . . .
var1 var2 var3 ... var10
1 3 3 2
NA NA NA NA
9 3 7 4
NA NA NA NA
. . . .
. . . .
. . . .
我使用的代码如下,每个变量1-9运行一次:
data <- data %>%
mutate(var1= replace(var1, # var1 on this line would be replaced by var2, var3, etc.
which(is.na(var10)), NA))
数据%
mutate(var1=replace(var1,#这一行上的var1将被var2、var3等替换)。
哪一个(是.na(var10)),na))
但是,我相信有更好的方法来实现这一点,而不是将代码复制/粘贴9次,每个变量1-9复制/粘贴一次
一般来说,我对编码比较陌生。似乎基于的东西是适用的,但还没有找到一种方法使其工作。非常感谢任何解决方案 如果我们使用的是
dplyr
,那么可以使用mutate\u at
data %>%
mutate_at(1:9, funs(replace(., is.na(data$var10), NA)))
或者我们可以使用
purrr
library(purrr)
map2_df(data[1:9], data[10], ~replace(.x, is.na(.y), NA))
这也可以通过
base R
data[1:9] <- data[1:9]*NA^is.na(data$var10)
数据[1:9]