在 R 中将连续重新编码为连续变量(无拆分函数)
Recode continuous into continuous variables (without split function) in R
我正在尝试重新编码一组使用 split 函数或 ifelse 函数无法轻松完成的数据。我将如何重新编码以下数据?
1 --> 1
2 --> 0
3 --> 0
4 --> 1
5 --> 1
7 --> 0
8 --> 1
感谢您的宝贵时间!
也许试试这个?尽管连续到连续通常意味着可以应用某种类型的函数。
x <- c(1:5, 7:8)
x
# [1] 1 2 3 4 5 7 8
x[x == 1] <- 1
x[x == 2] <- 0
x[x == 3] <- 0
x[x == 4] <- 1
x[x == 5] <- 1
x[x == 7] <- 0
x[x == 8] <- 1
x
# [1] 1 0 0 1 1 0 1
你可以试试:
library(car)
v <- c(1,2,3,4,5,6,7,8)
recode(v, "c(1,4,5,8) = 1; else = 0")
或者如@zx8754 所述,您可以使用 ifelse()
:
ifelse(v %in% c(1,4,5,8), 1, 0)
给出:
#[1] 1 0 0 1 1 0 0 1
另一种方法:
x <- +(x %in% c(1,4,5,8))
#[1] 1 0 0 1 1 0 1
+(..)
命名法是一种将逻辑向量强制转换为整数的方法,与 as.integer(..)
相同。
我正在尝试重新编码一组使用 split 函数或 ifelse 函数无法轻松完成的数据。我将如何重新编码以下数据?
1 --> 1
2 --> 0
3 --> 0
4 --> 1
5 --> 1
7 --> 0
8 --> 1
感谢您的宝贵时间!
也许试试这个?尽管连续到连续通常意味着可以应用某种类型的函数。
x <- c(1:5, 7:8)
x
# [1] 1 2 3 4 5 7 8
x[x == 1] <- 1
x[x == 2] <- 0
x[x == 3] <- 0
x[x == 4] <- 1
x[x == 5] <- 1
x[x == 7] <- 0
x[x == 8] <- 1
x
# [1] 1 0 0 1 1 0 1
你可以试试:
library(car)
v <- c(1,2,3,4,5,6,7,8)
recode(v, "c(1,4,5,8) = 1; else = 0")
或者如@zx8754 所述,您可以使用 ifelse()
:
ifelse(v %in% c(1,4,5,8), 1, 0)
给出:
#[1] 1 0 0 1 1 0 0 1
另一种方法:
x <- +(x %in% c(1,4,5,8))
#[1] 1 0 0 1 1 0 1
+(..)
命名法是一种将逻辑向量强制转换为整数的方法,与 as.integer(..)
相同。