计算R中的唯一值并显示在列中

时间:2017-01-25 11:53:02

标签: r dataframe unique

我有这个数据框,我想计算A列中的唯一值并在D列中显示它们

因此if else函数应该查看每个新唯一用户的列A和广告1

> DF_Have <- data.frame(A=c(1,2,2,3,3), B=1:5*10, C=1:5*100)
> DF_Have
   A  B   C
1: 1 10 100
2: 2 20 200
3: 2 30 300
4: 3 40 400
5: 3 50 500


> DF_Want
   A  B   C   D
1: 1 10 100   1
2: 2 20 200   2
3: 2 30 300   2
4: 3 40 400   3
5: 3 50 500   3

3 个答案:

答案 0 :(得分:3)

library(data.table)
DF_Have$D <- rleid(DF_Have$A)
DF_Have
#  A  B   C D
#1 1 10 100 1
#2 2 20 200 2
#3 2 30 300 2
#4 3 40 400 3
#5 3 50 500 3

不需要任何外部包的另一个选项是(提供DF_Have$A订购)

DF_Have$D <- cumsum(!duplicated(DF_Have$A))

答案 1 :(得分:2)

也许这有帮助

library(data.table)
setDT(DF_Have)[, D:= rleid(A)]
DF_Have
#   A  B   C D
#1: 1 10 100 1
#2: 2 20 200 2
#3: 2 30 300 2
#4: 3 40 400 3
#5: 3 50 500 3

或使用dplyr

library(dplyr)
DF_Have %>%
     mutate(D = cumsum(c(TRUE, A[-1]!= A[-length(A)])))

答案 2 :(得分:2)

我们可以使用基础R match

DF_Have$D <- match(DF_Have$A, unique(DF_Have$A))
DF_Have
#  A  B   C D
#1 1 10 100 1
#2 2 20 200 2
#3 2 30 300 2
#4 3 40 400 3
#5 3 50 500 3