【问题标题】:How can i estimate the median in R using the median fuction?如何使用中值函数估计 R 中的中值?
【发布时间】:2019-11-13 22:32:55
【问题描述】:

我正在尝试使用矩函数为一组变量计算一些统计矩。为了做到这一点,我尝试编写一个函数

当我尝试将我的函数与没有 NA 或缺失的数据框一起使用时,我确认数据是干净的,我有下一个错误:

library(moments)

summary.stat0 = function(data){ 
  SUM = matrix(NA,ncol=ncol(data),nrow=7)
  colnames(SUM) = colnames(data) 
  rownames(SUM) = c("Mean","Median","Maximum","Minimum","Std. Dev.","Skewness","Kurtosis")
  for (i in 1:ncol(data)) {
    SUM[1,i] = mean(data[,i])
    SUM[2,i] = median(data[,i])
    SUM[3,i] = max(data[,i])
    SUM[4,i] = min(data[,i])
    SUM[5,i] = sd(data[,i])
    SUM[6,i] = skewness(data[,i])
    SUM[7,i] = kurtosis(data[,i])
  }
  SUM
}

median.default(data[i]) 中的错误:需要数字数据另外:警告消息:在 mean.default(data[, i]) 中:

如果有人可以帮助我使用此功能,我将不胜感激

【问题讨论】:

标签: r compiler-errors statistics median


【解决方案1】:

您可以在 one apply 循环中计算所有需要的统计信息。

library(moments)

summary.stat <- function(data, na.rm = TRUE){ 
  SUM <- apply(data, 2, function(x){
    c(Mean = mean(x, na.rm = na.rm),
      Median = median(x, na.rm = na.rm),
      Max = max(x, na.rm = na.rm),
      Min = min(x, na.rm = na.rm),
      `Std. Dev.` = sd(x, na.rm = na.rm),
      Skewness = skewness(x, na.rm = na.rm),
      Kurtosis = kurtosis(x, na.rm = na.rm)
    )})
  colnames(SUM) <- colnames(data) 
  SUM
}

set.seed(1234)
df1 <- as.data.frame(replicate(3, rnorm(10)))

summary.stat(df1)
#                  V1         V2          V3
#Mean      -0.3831574 -0.1181707 -0.38794682
#Median    -0.5555419 -0.4941011 -0.46561688
#Max        1.0844412  2.4158352  0.57475572
#Min       -2.3456977 -0.9983864 -1.44820491
#Std. Dev.  0.9957875  1.0673376  0.66600127
#Skewness  -0.4243347  1.5011660  0.02058876
#Kurtosis   2.6686992  4.1925245  1.87910667

【讨论】:

  • 瑞非常感谢你。您的代码功能完美;虽然我不明白为什么我的代码不起作用。
  • 见@fmarm comment。您的代码已更正(并由我格式化),现在可以正常工作了。
猜你喜欢
  • 2022-11-09
  • 1970-01-01
  • 2016-04-24
  • 2020-07-26
  • 2021-09-27
  • 2015-11-08
  • 2019-10-18
  • 1970-01-01
  • 2019-05-02
相关资源
最近更新 更多