我需要替换数据帧中因子列的级别.例如,我如何用virginica替换数据集中的Species个单元格?

我本以为以下功能会起作用,但它会生成一条警告消息,并简单地插入NAs:

iris$Species[iris$Species == 'virginica'] <- 'setosa'

推荐答案

我敢打赌,问题是当你试图用一个新的值替换值时,这个值目前不属于现有因子的级别:

levels(iris$Species)
# [1] "setosa"     "versicolor" "virginica" 

你的例子很糟糕,这很有效:

iris$Species[iris$Species == 'virginica'] <- 'setosa'

这很可能会造成您在自己的数据中看到的问题:

iris$Species[iris$Species == 'virginica'] <- 'new.species'
# Warning message:
# In `[<-.factor`(`*tmp*`, iris$Species == "virginica", value = c(1L,  :
#   invalid factor level, NAs generated

如果你先提高因子水平,它就会起作用:

levels(iris$Species) <- c(levels(iris$Species), "new.species")
iris$Species[iris$Species == 'virginica'] <- 'new.species'

如果你想用"物种B"取代"物种A",你最好用

levels(iris$Species)[match("oldspecies",levels(iris$Species))] <- "newspecies"

R相关问答推荐

R中插入符号训练函数的中心因子和尺度因子预测

无法定义沿边轨迹的 colored颜色 渐变(与值无关)

方法::slotName如何处理非类、非字符的参数?

如何通过匹配R中所有可能的组合来从宽到长旋转多个列?

为左表中的所有行使用值Fill滚动左连接

使用shiny 中的所选要素行下拉菜单

用多边形替换地块点

如何使用grepl()在数据帧列表中 Select 特定字符串?

将CSV转换为R中的自定义JSON格式

无法保存gglot的所有pdf元素

组合名称具有模式的列表的元素

如何计算多个变量的百分比与总和的百分比?

为什么R列名称忽略具有指定名称的向量,而只关注索引?

为什么在POSIXct-times的向量上循环会改变R中的类型?

如何在类应用函数中访问函数本身

我应该如何解决Raster程序包中未对齐的色条记号?

Gg森林未显示其中一个变量的引用组

我想看看一个字符串值是否适合R中另一个字符串值的范围

将3个连续公式的函数应用于具有相同变量的稳健数据框

为什么S把一个字符值当作一个函数来对待?