我需要创建对应于另一列的组列B - A
DF
A B
XXL 1
XXL 1
XL 2
L 3
M 4
M 4
S 5
我试图使用多个ifelse
语句。但这并没有奏效,因为它返回了零列。我也尝试使用ifelse
的矢量化方式,结果相同。
感谢您的任何建议。
答案 0 :(得分:2)
我们可以使用match
或factor
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]