我有85,000个人的一些数据。每个人都被分配一个评级。此评级基于四列中的每一列中指定的权重。每列中的值可以在0到50之间。我需要的是一个表,列出了四列中每个唯一值组合的个体总数。
Individual Col1 Col2 Col3 Col4
1 50 0 0 0
2 40 10 0 0
3 40 10 0 0
4 30 10 10 0
5 30 10 10 0
6 30 10 10 0
所以结果将是
length Col1 Col2 Col3 Col4
1 50 0 0 0
2 40 10 0 0
3 30 10 10 0
我怀疑这应该是非常容易的,而且崩溃会产生我需要的东西,但也许会发生这种情况?
答案 0 :(得分:2)
library("dplyr")
df=read.table(header = T, text="Individual Col1 Col2 Col3 Col4
1 50 0 0 0
2 40 10 0 0
3 40 10 0 0
4 30 10 10 0
5 30 10 10 0
6 30 10 10 0 ")
df %>%
group_by(Col1,Col2,Col3,Col4) %>%
summarise(Length=n())
答案 1 :(得分:2)
您可以使用数据表
library(data.table)
as.data.table(df)[, .(length = .N), by = names(df[-1])]
# Col1 Col2 Col3 Col4 length
# 1: 50 0 0 0 1
# 2: 40 10 0 0 2
# 3: 30 10 10 0 3
既然你问了ddply
,你可以做
library(plyr)
ddply(df, names(df)[-1], summarise, length = length(Individual))
# Col1 Col2 Col3 Col4 length
# 1 30 10 10 0 3
# 2 40 10 0 0 2
# 3 50 0 0 0 1
答案 2 :(得分:1)
这是base R
解决方案
aggregate(Individual ~., df, length)
# Col1 Col2 Col3 Col4 Individual
#1 50 0 0 0 1
#2 40 10 0 0 2
#3 30 10 10 0 3