将分类变量值更改为单词

时间:2016-07-11 08:44:19

标签: r variables

我有一个数据框,在一个变量中,数据记录为1或0.我想将其转换为MaleFemale

如何做到这一点?

3 个答案:

答案 0 :(得分:1)

我们可以使用数字索引来替换值

df1$Col1 <- c("Female", "Male")[(df1$Col1+1)]
df1
#    Col1
#1 Female
#2   Male
#3   Male
#4 Female

或使用key/value向量

as.vector(setNames(c("Female", "Male"), c(0, 1))[as.character(df1$Col1)])
#[1] "Female" "Male"   "Male"   "Female"

或者使用ifelse可以更容易理解逻辑

df1$Col1, with(df1, ifelse(Col1==1, "Male", "Female"))

更新

如果它已经是factor

levels(df2$Col1) <- c("Female", "Male")

数据

df1 <- data.frame(Col1 = c(0, 1, 1, 0))
df2 <- data.frame(Col1 = factor(c(0, 1, 1, 0)))

答案 1 :(得分:1)

使用因素:

x <- c(0,1,1,0)
factor(x, levels = c(0, 1), labels = c("Female", "Male"))

# [1] Female Male   Male   Female
# Levels: Female Male

答案 2 :(得分:1)

可能不是您特定情况下的最佳答案,但recode包中的car函数也有效,并且在更复杂的重新编码规则时尤其有用。此外,我认为这是保证阅读您的代码行的人能够理解其实际行为的最佳方式:

df = data.frame('sex.num' = round(runif(5), 0))
df['sex.char'] = car::recode(df$sex.num, "0='Female'; 1='Male'")
print(df)
#### sex.num sex.char
#### 1       0   Female
#### 2       0   Female
#### 3       1     Male
#### 4       0   Female
#### 5       0   Female