[英]R Recode Variable In List
data=data.frame(X=c(1,2,3,4,5,6,7,8,9),
Y = c(1,0,0,0,1,1,2,2,1))
我有 X 列的数据并希望使用此规则重新编码:如果 X 等于 1、5、6、9,则 Y 等于 1,但如果 X 等于 2、3、4,则 Y 等于 0,如果 X 等于7,8 然后 Y 等于 2。我想知道,如何在不使用“if”语句的情况下做到这一点。 例如,可能在 dplyr、data.table 上。
也许您可以尝试下面的代码而不if
v1 <- c(1,5,6,9)
v2 <- c(2,3,4)
v3 <- c(7,8)
dfout <- within(data,Y <- 1*(X %in% v1) + 0*(X %in% v2) + 2*(X %in% v3))
这样
> dfout
X Y
1 1 1
2 2 0
3 3 0
4 4 0
5 5 1
6 6 1
7 7 2
8 8 2
9 9 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.