条件变异和向量

时间:2018-09-11 07:40:07

标签: r dplyr tidyverse

我有以下数据框:

df <- data.frame(
  x = rep(letters[1:3], 2)
)

以及以下向量:

vec <- c(1.5, 3.2)

此向量属于b中的每个df。如果vecb相匹配,如何进行变异,如果不匹配则返回NA的值?

预期结果:

1                    a                          NA
2                    b                         1.5
3                    c                          NA
4                    a                          NA
5                    b                         3.2
6                    c                          NA

1 个答案:

答案 0 :(得分:5)

最简单的方法是获取索引“ b”并将其替换为vec

df$output[df$x == "b"] <- vec

df
#  x output
#1 a     NA
#2 b    1.5
#3 c     NA
#4 a     NA
#5 b    3.2
#6 c     NA

另一个选择是replace

df$output <- replace(df$output, df$x == "b", vec)

强行将其放入tidyverse

library(dplyr)

df$output <- NA
df %>%
  mutate(output = replace(output, x == "b", vec))