将函数(stat测试)应用于每个因子水平的数据子集
问题描述:
我是R新手。我查看了许多类似的问题,但没有找到任何有助于我解决问题的方法。将函数(stat测试)应用于每个因子水平的数据子集
说我有一个数据帧DAT创建像这样:/
v1 v2 dv id
1 a x 40 p1
2 a x 99 p2
3 b x 67 p1
4 b x 24 p2
5 a y 16 p1
6 a y 51 p2
7 b y 85 p1
8 b y 72 p2
9 a z 33 p1
10 a z 31 p2
11 b z 88 p1
12 b z 50 p2
我想,每个条件VAR2的水平,:
dat <- data.frame(v1=rep(c("a","a","b","b"),3), v2=c(rep("x",4),rep("y",4),rep("z",4)), dv=sample(1:100, 12), id=rep(c("p1","p2"),6))
...看起来像这样在测试中针对var1的条件a &b之间的差异进行测试。 我可以通过var2的级别对数据框进行子集化,然后通过在var1的条件a & b之间应用差异的t检验来循环,但据我所知,R的一个优点是避免循环(使用apply和其他相关功能)。
(那我就进行多重比较,当然是正确的),你必须是所谓的apply
- 家庭
答
一个选项。
首先,将数据分成不同的v1
s,然后将函数应用于所有子集。
既然你要进行的变量t.test“DV”的做法将是这样的:
split_dat <- split(dat, dat$v2)
sapply(split_dat, function(sub_dat) {
result <- t.test(sub_dat[sub_dat$v1 == "a", "dv"],
sub_dat[sub_dat$v1 == "b", "dv"])
return(result$p.value)
})
# Result:
# x y z
# 0.1220663 0.6092622 0.8887763
只是我后,由于负荷 – hitchhiker