将数据框的列中的因子变量的值替换为该列的现有值

时间:2017-04-03 12:01:39

标签: r

这是我的数据集:

codes<-c("a1", "b1", "c1", "a2", "b2", "c2", "a3", "b3", "c3")
dt= data.frame(codes)

现在我想将“a1”,“a2”和“a3”替换为另一个现有值“c3”。 作为R的新手,我知道要替换列中的单个值,因为在这种情况下,我的代码将是:

dt$codes[dt$codes== “a1”] <- c3

但是因为我需要在这里替换多个值,所以我想使用OR逻辑来解决它,其中代码= a1或代码= a2或代码= a3

dt$codes[dt$codes== “a1” || “a2” || “a3”] <- “c3”

显然我的代码在这里引发了一些语法错误。我在想这里使用OR方法可能不正确。那么有没有简单的方法用该列中已有的值替换列的值?感谢

1 个答案:

答案 0 :(得分:1)

我们可以使用%in%

 dt$codes[dt$codes %in% c('a1', 'a2', 'a3')] <- 'c3'

由于它是factor类,更有效的方法是使用levels分配

levels(dt$codes)[levels(dt$codes) %in% c('a1', 'a2', 'a3')] <- 'c3'