我将一个因子转换为数字向量,即从“男”和“女”转换为“1”和“2”,使用R代码“as.numeric(data$Gender)”。但是,我想将数字向量转换为二进制数字,即从代表“男”的“1”和代表“女”的“2”,转换为代表“男”的“1”和代表“女”的“0”。请问有人可以告诉我如何完成这个操作吗?非常感谢您的帮助。
set.seed(1)
x <- sample(c("Male", "Female"), 10, TRUE)
x
# [1] "Male" "Male" "Female" "Female" "Male" "Female" "Female" "Female" "Female" "Male"
==
(假定您只有这两个选项)。as.numeric(x == "Male")
# [1] 1 1 0 0 1 0 0 0 0 1
key <- setNames(0:1, c("Female", "Male"))
key[x]
# Male Male Female Female Male Female Female Female Female Male
# 1 1 0 0 1 0 0 0 0 1
factor
指定标签。factor(x, c("Male", "Female"), labels = c(1, 0))
# [1] 1 1 0 0 1 0 0 0 0 1
# Levels: 1 0
as.numeric(as.character())
。as.numeric(as.character(factor(x, c("Male", "Female"), labels = c(1, 0))))
# [1] 1 1 0 0 1 0 0 0 0 1
+(x == "Male")
。 - lmoas.numeric
带来的微不足道的速度提升并不能抵消更明确的代码所带来的好处。更进一步,你可以使用as.integer
代替as.numeric
,它的性能更接近于+
(在我的大多数测试中都超过了它)。 - A5C1D2H2I1M1N2O1R2T1
as.numeric(factor(c("male", "female"), levels=c("female", "male"))) - 1
- alan ocallaghan