按第五列的特定值计算四列唯一组合的长度

时间:2014-12-01 02:40:50

标签: r

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

我怀疑这应该是非常容易的,而且崩溃会产生我需要的东西,但也许会发生这种情况?

3 个答案:

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