在 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
我喜欢用 "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