r - 如何在R中总结得出一个小组的模式

标签 r statistics dplyr mode

我想比较来自两个不同 claim 人的CPT代码的费用。两者都有面值和非面值的提供商。我正在使用dplyrmodeest::mlv,但是效果不如预期。这里是一些样本数据;

source CPTCode ParNonPar Key         net_paid  PaidFreq seq
ABC   100       Y      ABC100Y  -341.00     6   1
ABC   100       Y      ABC100Y     0.00     2   2
ABC   100       Y      ABC100Y   341.00     6   3
XYZ   103       Y      XYZ103Y   740.28     1   1
XYZ   104       N      XYZ104N     0.00     2   1
XYZ   104       N      XYZ104N   401.82     1   2
XYZ   104       N      XYZ104N   726.18     1   3
XYZ   104       N      XYZ104N   893.00     1   4
XYZ   104       N      XYZ104N   928.20     2   5
XYZ   104       N      XYZ104N   940.00     2   6

和代码
str(data)
View(data)

## Expand frequency count to individual observations
n.times <- data$PaidAmounts
dataObs <- data[rep(seq_len(nrow(data)), n.times),]

## Calculate mean for each CPTCode (for mode use modeest library)
library(dplyr)
library(modeest)
dataSummary <- dataObs %>%
  group_by(ParNonPar, CPTCode) %>%
  summarise(mean = mean(net_paid),
            median=median(net_paid),
            mode = mlv(net_paid, method=mfv),
            total = sum(net_paid))
str(dataSummary)                     

我以为我可以在平均值和中位数的摘要函数中加载适度的内容,但是这种表达方式的错误在于
as.character(x)中的错误:
无法将类型'closure'强制转换为类型为'character'的vector
没有mlv,我会得到这样的df,但是我想要的是在一行上获得付款人cpt的所有统计信息。我设想一旦获得连续所需的东西,便可以通过限制x和y线段在箱图中绘制图形

答案是这样的(我忘了在这里得到付款人的名字!)
ParNonPar   CPTCode mean          median(net_paid)  total
N           0513F   0.000000    0.000           0.00
N           0518F   0.000000    0.000           0.00 
N           10022   0.000000    0.000           0.00
N           10060   73.660000   90.120        294.64
N           10061   324.575000  340.500      1298.30
N           10081   312.000000  312.000       312.00

thanks very much for your time and effort.

最佳答案

您需要对代码进行几处更改才能使mlv正常工作。

  • 方法(mfv)必须在引号('mfv')之内。那就是导致您的错误的原因。
  • 完成此操作后,由于mlv返回一个列表,因此必须将一个值提供给summarise()。假设您要使用模式('M'),则从列表中选择该元素。

  • 尝试:
    dataSummary <- dataObs %>%
      group_by(ParNonPar, CPTCode) %>%
      summarise(mean = mean(net_paid), 
                meadian=median(net_paid), 
                mode = mlv(net_paid, method='mfv')[['M']], 
                total = sum(net_paid))
    

    要得到:
    > dataSummary
    Source: local data frame [3 x 6]
    Groups: ParNonPar
    
      ParNonPar CPTCode     mean meadian     mode   total
    1         N     104 639.7111  893.00 622.7333 5757.40
    2         Y     100   0.0000    0.00   0.0000    0.00
    3         Y     103 740.2800  740.28 740.2800  740.28
    

    希望能帮助您前进。

    关于r - 如何在R中总结得出一个小组的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385626/

    相关文章:

    r - 具有计数的不同序列模式

    r - 如何使用 ggplot2 在直方图中添加汇总统计信息?

    r - 使用 dplyr/tidyverse 进行类似扫描的操作

    r - 将条件应用于 R 中的多列

    r - 将 R 数据帧拆分为 n 个因子

    language-agnostic - "Reverse"统计信息 : generating data based on mean and standard deviation

    r - 分区统计 R(栅格/多边形)

    r - 根据 R 中的 initial_split() 参数中指定的比例,分配用于分析的行数不等于预期数

    在 R 中使用新列重复数据框

    c - R 不会引用/找不到编译后加载的 C 代码