计算元素在data.frame列中出现的次数

时间:2014-02-28 12:24:59

标签: r count dataframe

我们说我有一个带有因子的data.frame。

d = data.frame(f = c("a","a","a","b","b","b","b","d","d"))

  f
1 a
2 a
3 a
4 b
5 b
6 b
7 b
8 d
9 d

我想添加一个列,告诉我元素出现的次数。

喜欢这个

  f n
1 a 3
2 a 3
3 a 3
4 b 4
5 b 4
6 b 4
7 b 4
8 d 2
9 d 2

我该怎么做?

3 个答案:

答案 0 :(得分:2)

还可以使用一些plyr函数 - join& ddply

d <- data.frame(f = c("a","a","a","b","b","b","b","d","d"))   
d2 <- join(d, ddply(d, .(f), 'nrow'))
d2
  f nrow
1 a    3
2 a    3
3 a    3
4 b    4
5 b    4
6 b    4
7 b    4
8 d    2
9 d    2

答案 1 :(得分:1)

您可以使用avelength

> d$n <- as.numeric(ave(as.character(d$f), d$f, FUN = length))
> d
  f n
1 a 3
2 a 3
3 a 3
4 b 4
5 b 4
6 b 4
7 b 4
8 d 2
9 d 2

使用“data.table”包,您可以执行以下操作:

library(data.table)
D <- data.table(d)
D[, n := as.numeric(.N), by = f]

答案 2 :(得分:1)

您可以像这样使用table

d$n <- table(d$f)[d$f]
#  f n
#1 a 3
#2 a 3
#3 a 3
#4 b 4
#5 b 4
#6 b 4
#7 b 4
#8 d 2
#9 d 2