【发布时间】: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)
【问题讨论】: