当拆分同一数据集中的组时,我尝试在R中运行一系列t-test。我已经能够轻松地使用group_by对数据进行分组,并选择必要的变量。我还了解如何使用t.test函数轻松运行t-test,但这些并不能解决组的问题。
数据集由一组参与者组成,他们在两种不同的条件下完成干预,并具有不同的负载程度(例如,见下文)。
Participant Condition Load var.1 var.2 var.3
P01 a 1 834.99 0.383 0.342
P01 a 2 917.22 0.342 0.301
P01 a 3 995.24 0.305 0.263
P01 b 1 1074.22 0.276 0.235
P01 b 2 1156.46 0.247 0.208
P01 b 3 871.41 0.307 0.277
P02 a 1 945.10 0.290 0.260
P02 a 2 1010.39 0.272 0.239
P02 a 3 1096.92 0.265 0.234
P02 b 1 1171.91 0.227 0.195
P02 b 2 664.00 0.260 0.191
P02 b 3 711.92 0.238 0.175
P03 a 1 782.02 0.211 0.154
P03 a 2 858.70 0.174 0.134
P03 a 3 915.21 0.154 0.114
P03 b 1 668.22 0.178 0.207
P03 b 2 723.92 0.243 0.186
P03 b 3 788.31 0.209 0.157 我使用以下命令拆分组:
grouped.my.df <- my.df %>%
group_by(Condition, Load) %>%
select(-var.4, -var.5,-var.6)然后,我尝试运行t-test,但不确定如何从tbl中创建的组运行它。是更好地创建每个组的向量(如果是这样,如何创建),还是可以直接对创建的组运行t-test?(下面的代码是我想要做的一个例子,我知道它实际上并不起作用)。
t.test(group.P01.a.1$var.1, group.P01.b.1$var1)任何帮助都是非常感谢的。
发布于 2019-08-25 10:24:27
您未正确应用group_by。它并不能像你现在使用的那样做任何事情。
您可以使用filter选择数据集的一个子集,例如:
grouped.a.1 = my.df %>% filter(Condition == "a", Load == 1)
grouped.b.1 = my.df %>% filter(Condition == "b", Load == 1)然后在t.test中使用它
t.test(grouped.a.1$var.1, grouped.b.1$var.1)或者,因为如果有两个组,t.test也接受公式参数:
t.test(var.1 ~ Condition, my.df %>% filter(Load == 1))两者都针对Load == 1的b条件测试a条件。我假设你的t.test(group.P01.a.1$var.1, group.P01.b.1$var1)产品线中的参与者的歧视是无意的。
我想我误解了你的问题,你想要的可能是这样的
my.df %>%
select(-Participant) %>%
group_by(Load) %>%
summarize_at(
vars(-group_cols(), -Condition),
list(p.value = ~ t.test(. ~ Condition)$p.value) )这将为您提供Load和所有变量的所有值在两个条件之间的所有两组t检验的p值。
https://stackoverflow.com/questions/57642683
复制相似问题