计算多个模拟数据框中多列值范围的百分比

Calculate percentages of range of values within multiple columns in multiple simulated dataframes

我有五个数据框,每个数据框有 8 列和 10000 行。每个数据帧的数据是从具有不同 meansd 规格的随机 t 分布中提取的。每列对应于这些规格之一。同时,每个个案都是从特定 t 分布中提取的一个 t 值。我是手工完成的,没有自动过程。 (关于如何更轻松地执行此操作的任何建议?)

对于数据框中的每一列,我想计算位于特定范围 >0,=<0.6 之间的观察值的百分比; >0.6,=<0.7; >0.7,=<0.8 等等,直到 >1.4。

我尝试了 for 循环,但我仍然很难理解它是如何工作的,所以我也失败了。

isim20$ival_05 <- cut(isim20[,1], c(0,0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, max(isim20[,1])))
isim20$ival_08 <- cut(isim20[,2], c(0,0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, max(isim20[,2])))
...

,其中 isim20是我的数据框 ival_05ival_08 是两个变量(列),我想为其计算 cut 命令中范围给出的百分比。

我在这一点上卡住了,因为我不明白如何一次计算每列的每个值范围的百分比(以避免手动计算)。除此之外,我还必须为所有五个数据帧重复所有内容。

感谢您的所有建议!

我相信这会有所帮助(最终 Freq var 会保存您需要的百分比)。我创建了虚拟数据,不需要任何包:

#Dummy data
set.seed(123)
DF <- data.frame(v1=runif(10000,0,2),
                 v2=runif(10000,0,2),
                 v3=runif(10000,0,2),
                 v4=runif(10000,0,2),
                 v5=runif(10000,0,2),
                 v6=runif(10000,0,2),
                 v7=runif(10000,0,2),
                 v8=runif(10000,0,2))
#Create function
compute_breaks <- function(x)
{
  y <- cut(x, breaks=c(0,0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, max(x)),include.lowest = T,right = T,
           dig.lab = 10)
  z <- as.data.frame(prop.table(table(y)))
  return(z)
}
#Apply and obtain a list
List <- apply(DF,2,compute_breaks)
#Bind all
DF2 <- do.call(rbind,List)
#Format to obtain variable
DF2$var <- gsub("\..*",'',rownames(DF2))
rownames(DF2) <- NULL

你会得到这样的东西(我只包括 head()tail()):

         y   Freq var
1   [0,0.6] 0.3012  v1
2 (0.6,0.7] 0.0485  v1
3 (0.7,0.8] 0.0477  v1
4 (0.8,0.9] 0.0567  v1
5   (0.9,1] 0.0516  v1
6   (1,1.1] 0.0481  v1
----------------------
                  y   Freq var
75           (0.9,1] 0.0476  v8
76           (1,1.1] 0.0549  v8
77         (1.1,1.2] 0.0480  v8
78         (1.2,1.3] 0.0476  v8
79         (1.3,1.4] 0.0478  v8
80 (1.4,1.999860199] 0.2999  v8