[英]Frequency count for a specific category
I have a data set like this. 我有这样的数据集。
a <- structure(list(Prone = c("M", "N", "N", "N", "M", "N", "M", "N", "M", "M"),
Type = c("A", "B", "C", "A", "A", "A", "B", "B", "C", "B"),
Alc = c("A", "B", "N", "A", "A", "A", "B", "B", "B", "B"),
Com = c("Y", "N", "Y", "Y", "Y", "Y", "Y", "N", "N", "Y")),
.Names = c("Prone", "Type", "Alc", "Com"), row.names = c(NA, -10L), class = "data.frame")
a
Prone Type Alc Com
1 M A A Y
2 N B B N
3 N C N Y
4 N A A Y
5 M A A Y
6 N A A Y
7 M B B Y
8 N B B N
9 M C B N
10 M B B Y
I like to get the frequency count of each unique row like the following: 我喜欢获取每个唯一行的频率计数,如下所示:
Prone Type Alc Com Freq
1 M A A Y 2
2 M B B Y 2
3 M C B N 1
4 N A A Y 2
5 N B B N 2
6 N C N Y 1
Thanks in advance. 提前致谢。
Alternate plyr
solution: 备用plyr
解决方案:
> library("plyr")
> count(a)
Prone Type Alc Com freq
1 M A A Y 2
2 M B B Y 2
3 M C B N 1
4 N A A Y 2
5 N B B N 2
6 N C N Y 1
The mandatory data.table
solution: 强制数据data.table
解决方案:
library(data.table)
dt = data.table(a)
dt[, list(Freq = .N), by = names(dt)]
There are a lot of ways to do this, here is a simple plyr
example: 有很多方法可以做到这一点,这是一个简单的plyr
示例:
> library(plyr)
> ddply(a,names(a),summarize,Freq=length(Prone))
Prone Type Alc Com Freq
1 M A A Y 2
2 M B B Y 2
3 M C B N 1
4 N A A Y 2
5 N B B N 2
6 N C N Y 1
Using base aggregate
: 使用基本aggregate
:
aggregate(data = transform(a, Freq = seq_len(nrow(a))), Freq ~ ., length)
Prone Type Alc Com Freq
1 N B B N 2
2 M C B N 1
3 M A A Y 2
4 N A A Y 2
5 M B B Y 2
6 N C N Y 1
Here's another approach: 这是另一种方法:
library(qdap)
colsplit2df(data.frame(table(paste2(a))), new.names = names(a))
## > colsplit2df(data.frame(table(paste2(a))), new.names = names(a))
## Prone Type Alc Com Freq
## 1 M A A Y 2
## 2 M B B Y 2
## 3 M C B N 1
## 4 N A A Y 2
## 5 N B B N 2
## 6 N C N Y 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.