繁体   English   中英

R 重新编码列表中的变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM