我有一个数据框,在一个变量中,数据记录为1或0.我想将其转换为Male
或Female
。
如何做到这一点?
答案 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