2014-02-28 66 views
1

假设我有一个带有因子的data.frame。计算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 

我将如何做到这一点?

回答

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 
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

还可以用一些plyr好玩ctions - 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