【问题标题】:Calculate Length for Unique Combinations of Four Columns by Specific value of Fifth Column通过第五列的特定值计算四列唯一组合的长度
【发布时间】:2014-12-01 12:22:52
【问题描述】:

我有一些关于 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  

我怀疑这应该很容易,并且崩溃会产生我需要的东西,但也许 ddply 也会如此?

【问题讨论】:

    标签: r


    【解决方案1】:
    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()) 
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-29
          • 2012-02-10
          相关资源
          最近更新 更多