您可以使用factor 将变量转换为因子并标记它:
CB <- data.frame(gender= c("Male", "Female", "Male", "Male", "Female", "Female", "Male", "Male"))
CB$gender <- ifelse(CB$gender == "Male", 0, ifelse(CB$gender == "Female", 1, 999))
str(CB)
#'data.frame': 8 obs. of 1 variable:
# $ gender: num 0 1 0 0 1 1 0 0
CB$gender <- factor(CB$gender ,
labels=c("Male", "Female"))
str(CB)
#'data.frame': 8 obs. of 1 variable:
# $ gender: Factor w/ 2 levels "Male","Female": 1 2 1 1 2 2 1 1
table(CB$gender)
#Male Female
# 5 3
注意:R 通过转换为因子分配级别 1(在本例中为 1 和 2)
或者,您可以使用包lfactors:
library(lfactors)
CB <- data.frame(gender= c("Male", "Female", "Male", "Male", "Female", "Female", "Male", "Male"))
CB$gender <- ifelse(CB$gender == "Male", 0, ifelse(CB$gender == "Female", 1, 999))
CB$gender <- lfactor(CB$gender,
levels=0:1,
labels=c("Male", "Female"))
print(CB$gender)
#[1] Male Female Male Male Female Female Male Male
#Levels: Male Female
#Numeric levels: 0 1
table(CB$gender)
# Male Female
# 5 3
attributes(CB$gender)$llevels
#[1] 0 1
另一个最接近 SPSS 类比的选项是使用包 labelled 和 sjmisc,如下所示:
library(labelled)
library(sjmisc) #access to function to_label()
CB <- data.frame(gender= c("Male", "Female", "Male", "Male", "Female", "Female", "Male", "Male"))
CB$gender <- ifelse(CB$gender == "Male", 0, ifelse(CB$gender == "Female", 1, 999))
val_labels(CB$gender) <- c("Male" = 0, "Female" = 1)
print(CB$gender)
#<Labelled double>
#[1] 0 1 0 0 1 1 0 0
#Labels:
# value label
# 0 Male
# 1 Female
table(to_label(CB$gender))
# Male Female
# 5 3
此外,您可以组合使用包sjmisc 和sjlabelled。
library(sjmisc) #access to function to_label()
library(sjlabelled) #function set_labels()
CB <- data.frame(gender= c("Male", "Female", "Male", "Male", "Female", "Female", "Male", "Male"))
CB$gender <- ifelse(CB$gender == "Male", 0, ifelse(CB$gender == "Female", 1, 999))
CB$gender <- set_labels(CB$gender, labels=c("Male", "Female"))
print(CB$gender)
#[1] 0 1 0 0 1 1 0 0
#attr(,"labels")
# Male Female
# 0 1
table(to_label(CB$gender))
# Male Female
# 5 3
函数to_label() 与包lfactors、labelled 和sjlabelled 的工作方式类似。