我有一个带有38个变量的数据框数据集30。我想对37个变量中的一些进行t检验,然后对38个变量进行分组...像这样:
t.test (dataset30$Var1[which(dataset30$Var38 == 1)],dataset30$Var[which(dataset30$Var38 == 2)])
作为解决方案的第一步,我不高兴地尝试遍历所有变量,但失败了:
lapply(dataset30, t.test(x[which(dataset30$Var38 == 1)],x[which(dataset30$ == 2)]))
怎么办?
答案 0 :(得分:2)
如何?
由于没有给出示例,因此我将使用mtcars作为R环境中存在的数据集。
mtcars_subst <- mtcars[,c("mpg", "drat", "hp", "am")] #Sample data
#Final code for running t.test
lapply(mtcars_subst[,c(1,2,3)], function(x)t.test(x ~ am, data=mtcars_subst))
# iteratively running t.test on column mpg, drat and hp basis am as the category
澄清后已更新:
逻辑:
过滤4和6上的cyl值,cyl中共有3个类别(4,6和8),仅选择4,6。我在这里用了%in%。您可以在lapply内过滤,或者在外部过滤所需数据的子集,然后使用lapply。
mtcars_subst <- mtcars[,c("mpg", "drat", "hp", "cyl")]
lapply(mtcars_subst[mtcars_subst$cyl %in% c(4,6),c(1,2,3)], function(x)t.test(x ~ cyl, data=mtcars_subst[mtcars_subst$cyl %in% c(4,6),])) #comparing certain 2 groups