在 R 中用 "no" 替换空白单元格

Replace blank cell with "no" in R

我喜欢用 "no" 替换列中的空白单元格 (" ")。缺失的条目对我来说确实有意义(尚未确定分数),我喜欢稍后在回归树中使用因子变量。

我在这里发现了一个类似的问题 (Replace blank cells with character) 并尝试了以下操作,但随后空白单元格被转换为 NA 而不是文本:

> Test$SCORE[Test$SCORE==" "]<- "no"

Warning message:
In `[<-.factor`(`*tmp*`, Test$SCORE == " ", value = c(NA, NA, 8L,  :
  invalid factor level, NA generated

有没有办法避免 NA 并使用我自己的文本?

请查看示例数据 "Test":

ID  Score  
 1. A
 2. " "
 3. B
 4. " "
 5. C

有没有办法避免 NA 并使用我自己的文本? 这是我想要达到的结果:

ID  Score
1   A
2   "no"
3   B 
4   "no"
5   C

数据集非常大,因此通过索引特定行的手动解决方案非常耗时。 感谢您的帮助,因为 R 对我来说是全新的。

非常感谢您。

附加信息:

str(Test$SCORE) Factor w/ 13 levels " ","A","B","C",..

请原谅示例的格式table,但这是我的第一个问题。

在因素水平上的工作:

DF <- read.table(text = 'ID  Score  
                 1. A
                 2. " "
                 3. B
                 4. " "
                 5. C', header = TRUE)
levels(DF$Score)[levels(DF$Score) == " "] <- "no"
#  ID Score
#1  1     A
#2  2    no
#3  3     B
#4  4    no
#5  5     C

这非常有效,因为因子水平通常比向量中的元素少得多。

> df <- data.frame(Test=1:5,Score=c("A"," ","B"," "," "))
> df
   Test Score
 1    1     A
 2    2      
 3    3     B
 4    4      
 5    5      

> df[,2] <- as.character(df$Score)
> is.character(df[,2])
[1] TRUE

> df$Score[df$Score==" "] <- "No"
> df
  Test Score
1    1     A
2    2    No
3    3     B
4    4    No
5    5    No