我的数据框中有一个类列,其中包含值" Bad" &安培; "良好的&#34 ;.我想将这些字符串替换为0&分别为1。
我尝试了以下内容:
x = c("Bad", "Good", "Bad", "Bad", "Good")
factor(x)
factor(x, c(0, 1))
但是,它会将数据集中的值转换为NA
factor(x, c(0, 1))
[1] <NA> <NA> <NA> <NA> <NA>`
Levels: 0 1`
答案 0 :(得分:1)
您可以使用命名向量将文本字符串映射到数值。
df <- data.frame( x = c("Bad", "Good", "Bad", "Bad", "Good"), stringsAsFactors = FALSE)
lookup <- c("Bad" = 0, "Good" = 1)
df$new_x <- lookup[df$x]
结果
df
x new_x
1 Bad 0
2 Good 1
3 Bad 0
4 Bad 0
5 Good 1
# showing type info
str(df)
'data.frame': 5 obs. of 2 variables:
$ x : chr "Bad" "Good" "Bad" "Bad" ...
$ new_x: num 0 1 0 0 1
答案 1 :(得分:0)
方便的整数方法是使用dplyr的recode
函数。
df <- data.frame(x = c("Bad", "Good", "Bad", "Bad", "Good"))
df$x <- as.factor(df$x)
library(tidyverse)
df <- df %>%
mutate(x = recode(x,
"Bad" = "0",
"Good" = "1"))
假设你想把它作为一个因子列。如果您更喜欢它是一个数字向量,您只需添加第二个mutate调用即可将其转换为数字。
df <- df %>%
mutate(x = recode(x,
"Bad" = "0",
"Good" = "1")) %>%
mutate(x = as.numeric(x))