- 此问题在此处已有答案**:
Keep value if not in case_when statement(2个答案)
7天前关闭。
在一项调查中,我有两个向量,一个包含受访者对问题的回答(包括NA),另一个是特定NA代码的哑元(即,对于具有特定NA值的所有受访者,如"不知道"或"不想说",该值为1)。
它可能看起来像这样。
a <- c(0, 1, 2, 3, 4, NA, NA, 7)
b <- c(0, 0, 0, 0, 0, 0, 1, 0)
现在我想修改a,使它保持所有的观测值,但在b = 1时被赋一个不同的值(比如99)。
最终结果应该如下所示。
> a
[1] 0 1 2 3 4 NA 99 7
我可以用变通的解决方案来达到这个结果,但如果能知道是否有一种方法可以直接到达那里,那就太好了。
2条答案
按热度按时间q0qdq0h21#
使用dplyr的一种方法:
或者一个非常简单的直接方式
a[b==1] = 99
iyfjxgzm2#
在两个向量具有相同长度的假设下,你可以仅仅基于
b
创建logicals
的“索引”向量,并且使用它来索引a
的元素以用于值分配