计算数据框所有列之间的统计量(coohend)(使用 apply family 函数)

Compute a statistic (coohend) between all the columns of a dataframe (using apply family function)

我有一个看起来像这样的数据框

Concentration  Value
Low            0.21
Medium         0.85    
Low            0.10
Low            0.36
High           2.21
Medium         0.50
High           1.85

使用 pivot_wider 函数,您可以将其转换为数据框,其中每一列都是另一个变量的值:

Low           Medium         High
c(0.21,...)   c(0.87 ,...)   c(1.47 ,...)

library(effsize) 包中有一个名为 cohen.d() 的函数,可让您计算两组之间的效应大小。 例如,您可以 cohen.d(dat$Low, dat$Medium) 来获得这两列之间的效果大小。

但是,在这种情况下,我想使用 apply 系列中的一个函数来计算 Low 列与所有其余变量之间的余量。

一个基本的 R 想法可以是,

library(effsize)

l3 <- split(dd$Value, dd$Concentration)
lapply(l3[!names(l3) %in% 'Low'], function(i)cohen.d(l3$Low, i))
$High

Cohen's d

d estimate: -9.952077 (large)
95 percent confidence interval:
      lower       upper 
-20.3804615   0.4763081 


$Medium

Cohen's d

d estimate: -2.533928 (large)
95 percent confidence interval:
    lower     upper 
-6.399536  1.331680 

数据

dput(dd)
structure(list(Concentration = c("Low", "Medium", "Low", "Low", 
"High", "Medium", "High"), Value = c(0.21, 0.85, 0.1, 0.36, 2.21, 
0.5, 1.85)), class = "data.frame", row.names = c(NA, -7L))