首页 > 解决方案 > 如果列表中存在值,则更改列的值

问题描述

我有一个结构如下的 R 数据框:

indx <- as.factor(c('A01','A02','A03','B01','B02','B03'))
data <- runif(6,0,10)
valid <- rep(TRUE, 6)

df <- data.frame(indx, data, valid)

  indx     data valid
1  A01 6.534581  TRUE
2  A02 4.996695  TRUE
3  A03 3.328804  TRUE
4  B01 2.342048  TRUE
5  B02 9.928362  TRUE
6  B03 5.484037  TRUE

indx当无效时,我还有一个值列表。

invalid_list <- as.factor(c('A02','B03'))

如果valid存在于_ _FALSEindxinvalid_list

结果应如下所示:

  indx     data valid
1  A01 6.534581  TRUE
2  A02 4.996695  FALSE
3  A03 3.328804  TRUE
4  B01 2.342048  TRUE
5  B02 9.928362  TRUE
6  B03 5.484037  FALSE

标签: rdplyr

解决方案


基于以下的解决方案dplyr

library(dplyr)

df %>% 
  mutate(valid = ifelse(indx %in% invalid_list, FALSE, valid))

推荐阅读