基于多个“ifelse”创建组列

时间:2016-05-16 06:56:44

标签: r

我需要创建对应于另一列的组列B - A

DF
A     B
XXL   1
XXL   1
XL    2
L     3
M     4
M     4
S     5

我试图使用多个ifelse语句。但这并没有奏效,因为它返回了零列。我也尝试使用ifelse的矢量化方式,结果相同。 感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

我们可以使用matchfactor

 DF$B <- with(DF, match(A, unique(A)))
 DF$B
 #[1] 1 1 2 3 4 4 5

或者

 as.numeric(factor(DF$A, levels = unique(DF$A)))
 #[1] 1 1 2 3 4 4 5

以下是其他一些选项

 cumsum(!duplicated(DF$A))
 #[1] 1 1 2 3 4 4 5

data.table

library(data.table)
setDT(DF)[, B:= .GRP, A]