r - 因子的级别之一是空字符串;如何用非缺失值替换它?

标签 r dataframe r-factor

数据框 AEbySOC 包含两列 - 具有字符级别的因子 SOC 和整数计数:

> str(AEbySOC)
'data.frame':   19 obs. of  2 variables:
 $ SOC  : Factor w/ 19 levels "","Blood and lymphatic system disorders",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Count: int  25 50 7 3 1 49 49 2 1 9 ...

SOC的其中一个级别是空字符串:

> l = levels(AEbySOC$SOC)
> l[1]
[1] ""

我想用非空字符串替换该级别的值,例如“未指定”。这不起作用:

> library(plyr)
> revalue(AEbySOC$SOC, c(""="Not specified"))
Error: attempt to use zero-length variable name

这也不是:

> AEbySOC$SOC[AEbySOC$SOC==""] = "Not specified"
Warning message:
In `[<-.factor`(`*tmp*`, AEbySOC$SOC == "", value = c(NA, 2L, 3L,  :
  invalid factor level, NA generated

实现这个的正确方法是什么?我感谢任何意见/评论。

最佳答案

levels(AEbySOC$SOC)[1] <- "Not specified"

创建了一个玩具示例:

df<- data.frame(a= c("", "a", "b"))

df
#  a
#1  
#2 a
#3 b

levels(df$a)
#[1] ""  "a" "b"

levels(df$a)[1] <- "Not specified"

levels(df$a)
#[1] "Not specified" "a"             "b" 

编辑

根据OP的评论,如果我们需要根据值找到它,那么在这种情况下,我们可以尝试

levels(AEbySOC$SOC)[levels(AEbySOC$SOC) == ""] <- "Not specified"

关于r - 因子的级别之一是空字符串;如何用非缺失值替换它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370738/

相关文章:

R:按级别频率和绘图排序因子

r - R 中的 H2O 错误 - 无法连接到本地主机

r - 为什么在强制转换为字符时列表中的日期首先转换为数字

python - pandas如何对一段时间进行分组,然后在组内过滤后返回一个df?

dataframe - 在 Julia 中检查 Dataframe 多列中的元素

r - 如何将大多数因素的数据框转换为数值矩阵;不公开不起作用

r - R 3.6 中的 mutate_at() 问题

r - 使用 geom_text 在 ggplot2 中的单个方面注释文本

Pandas - 检查不同列中的字​​符串匹配,列值以逗号分隔

r - 如何为因子变量的每个级别应用函数?