通过分组变量为每行插入计数字段

时间:2013-04-15 22:53:53

标签: r

我有一个数据集,其中包含分组和排序的观察结果(按排名)。我想添加第三个变量,它是每个分组变量的观察数量的计数。我知道如何对变量进行分组和计数,但我找不到将这些计数重新插入原始数据集的方法,原始数据集有更多行。我想在下面的示例表中获取变量C.

A B C
1 1 3 
1 2 3
1 3 3
2 1 4
2 2 4
2 3 4
2 4 4

2 个答案:

答案 0 :(得分:3)

这是使用ave的一种方式:

DF <- within(DF, {C <- ave(A, A, FUN=length)})
#   A B C
# 1 1 1 3
# 2 1 2 3
# 3 1 3 3
# 4 2 1 4
# 5 2 2 4
# 6 2 3 4
# 7 2 4 4

答案 1 :(得分:3)

这是使用data.table的一种方法,它使用.N,在帮助文件中将“data.table”描述为 .N是一个整数,长度为1,包含组中的行数。

> library(data.table)
> DT <- data.table(A = rep(c(1, 2), times = c(3, 4)), B = c(1:3, 1:4))
> DT
   A B
1: 1 1
2: 1 2
3: 1 3
4: 2 1
5: 2 2
6: 2 3
7: 2 4
> DT[, C := .N, by = "A"]
> DT
   A B C
1: 1 1 3
2: 1 2 3
3: 1 3 3
4: 2 1 4
5: 2 2 4
6: 2 3 4
7: 2 4 4