2016-05-16 80 views
1

我需要创建组列 - B对应于另一列 - 一个“ifelse”创建基于多组列

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

我试图用多个ifelse声明。但是这并不奏效,因为它返回了零列。以及我试图使用矢量化的方式ifelse导致相同的方式。 谢谢你的任何建议。

回答

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] 
+1

噢谢谢你!太简单 :) – HoHoHo