【问题标题】:Calculate median based on counts of value根据价值计数计算中位数
【发布时间】:2020-10-17 20:17:25
【问题描述】:

我有以下数据框:

   numbers Freq
1        4    2
2        5    1
3       23    2
4       34    2

我知道当频率为 1 (median(`numbers`, na.rm = TRUE)) 时如何计算 r 中的中位数,但是当频率不同于 1 时如何计算?

【问题讨论】:

    标签: r median


    【解决方案1】:

    我们可以用!=创建一个逻辑索引,用它来子集“数字”列并得到median

    with(df1, median(numbers[Freq != 1], na.rm = TRUE))
    #[1] 23
    

    数据

    df1 <- structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
    2L, 2L)), class = "data.frame", row.names = c("1", "2", "3", 
    "4"))
    

    【讨论】:

      【解决方案2】:

      这是另一个使用 tapplysubset 的选项

      > with(subset(df,Freq != 1),tapply(numbers,Freq,median,na.rm = TRUE))
       2
      23
      

      数据

      > dput(df)
      structure(list(numbers = c(4L, 5L, 23L, 34L), Freq = c(2L, 1L, 
      2L, 2L)), class = "data.frame", row.names = c("1", "2", "3",
      "4"))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-21
        • 2013-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-01
        相关资源
        最近更新 更多