【问题标题】:Calculate median from x, y data R从 x, y 数据 R 计算中位数
【发布时间】:2022-06-22 21:24:20
【问题描述】:

我有一个关于给定大小的粒子群的数据框。数据组织在一个数据框中,其中第一列代表大小(x 值),其他列代表实际大小的密度(y 值)。我需要计算所有列的中位数。 由于median() 使用历史数据,我决定通过将第一列的值第 N 次添加到向量并从行的所有列中获取 N 来将我的数据集转换为这种类型。这确实有效,但对于我的 1200 行数据帧来说真的很慢,所以我想知道您是否有更有效的解决方案。

df <- data.frame(Size = c(1:100),
                 val1 = sample(0:9,100,replace = TRUE,),
                 val2 = sample(0:9,100,replace = TRUE))

get.median <- function(dataset){
  results <- list()
  for(col in colnames(dataset)[2:ncol(dataset)]){
    col.results <- c()
    for(i in 1:nrow(dataset)){
      size <- dataset[i,"Size"]
      count <- dataset[i,col]
      out <- rep(size,count)
      col.results <- c(col.results,out)
    }
    med <- median(col.results)
    results <- append(results,med)
  }
  return(results)  
}

get.median(df)

【问题讨论】:

    标签: r median


    【解决方案1】:

    您可以使用sapplymedian 计算每一列的median,如下所示:

    sapply(df, median)
    

    输出:

    Size val1 val2 
    50.5  6.0  3.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-25
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多