0

我有一个数据集,其中包含分组和排序(按等级)的观察结果。我想添加第三个变量,它是每个分组变量的观察次数的计数。我知道对变量进行分组和计数的方法,但我找不到将这些计数重新插入到具有更多行的原始数据集中的方法。我想在下面的示例表中获取变量 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
4

2 回答 2

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
于 2013-04-16T06:17:23.490 回答
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
于 2013-04-15T22:57:49.097 回答