使用r中的循环有条件地更新值



我正在为一个调查数据做一些数据操作,这简直要了我的命…这就是我所遇到的。我得到了两个数据框,df1是调查数据,df2是每个被调查者的问题访问历史。1 =被调查者访问了问题,0 =被调查者没有访问问题。我想做的是区分调查数据中被调查者拒绝回答导致的NA和被调查者没有访问问题导致的NA。我希望实现的逻辑是

if df2$var == 0, then df1$var <- "does not apply"

数据帧的结构如下:

df1:调查数据

<表类>IDvar1var2var3var4tbody><<tr>1NA2bNAbb3ccNAc4NAdNAd

如果您可以匹配您希望直接比较的df1df2的块,则不需要循环:

cols <- c("var1","var2","var3")
df1[cols][df2[cols]==0] <- "Does Not Apply"
##  ID           var1           var2           var3 var4
##1  1              a              a Does Not Apply    a
##2  2              b Does Not Apply              b    b
##3  3              c              c           <NA>    c
##4  4 Does Not Apply              d Does Not Apply    d

最新更新