【问题标题】:calculate mode in R wrt other column [duplicate]在R wrt其他列中计算模式[重复]
【发布时间】:2016-06-08 00:00:08
【问题描述】:

此问题与以下问题不重复: 是否有用于查找模式的内置功能? Is there a built-in function for finding the mode? 上面提到的所有答案都是针对单列或向量的链接查找模式。而我想找到其他专栏的模式

我有这样的数据:-

Col1 Col2
C    High
B    Small
C    Medium
B    High
D    Medium
B    Medium
B    Small
B    Medium
B    Small
B    High
B    Small
C    Medium
B    Medium
D    High
B    Small
B    High
D    High

我想查找模式和结果应该如下所示:-

col1  Mode 
B     Small
C     Medium
D     High

有什么帮助吗?

谢谢

【问题讨论】:

  • 您能解释一下您实际尝试实现的目标吗?如果没有进一步的解释,我无法理解你是如何得到这个结果的。
  • col2 中的哪个值对于 col1 中的每个唯一值出现的最大次数。与 B 一样,Value small 出现最大次数。对于 C 和 D 也是如此

标签: r data-analysis


【解决方案1】:

使用data.table 库:

library(data.table)

dt <- as.data.table(df)
dt[, .N, by = list(Col1, Col2)][, .SD[which.max(N)], by = Col1]

【讨论】:

    【解决方案2】:
    library(data.table)
    df[,.(Mode = names(which.max(table(Col2)))), by = Col1]
    
       Col1   Mode
    1:    C Medium
    2:    B  Small
    3:    D   High
    

    非常相似的解决方案,将其留在这里以供参考。

    【讨论】:

    • 你也可以在基础 R 中执行此操作:aggregate(Col2 ~ Col1, data = df, function(x) names(which.max(table(x))))
    • @jaap 谢谢。最简单的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多