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。
发布于 2020-07-23 07:26:55
也许你可以在没有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 1https://stackoverflow.com/questions/63044535
复制相似问题