0

你好我所有的数据框看起来像

category    calss   test1   test2
1            Yes    5.5     4.2
1             No    5.8     4.3
1            Yes    6.6     3.2
2            Yes    6       7.7
2             No    5.7     5.8
3             No    9.7     4.5
3            Yes    6.8     8.5
2             No    6.3     9.6
3            Yes    8.5     2.6

我想分别根据类和类别计算(test1和test2之间)的平均SD和Pvalue

我使用 dplyr 计算平均值和 SD 并努力计算 Pvalue,因为我的数据集包含 1000 行和 4 个不同的类别和 8 个类

这是使用 dplyr 表示 mean 和 sd 后得到的结果

category    class   test1_Mean  test1_SD    test2_Mean  test2_SD
1            Yes    6              1             3.7    1.1
1             No    5.8             0            4.3    0
2            Yes    9.6             0            4.4    0
2             No     6             1.1           7.7    1
3            Yes    7.6            0.5           5.5    0.8
3             No    9.7             0            4.5    0

而SD只是手动输入以显示它的错误值我想要的输出是

category    class   test1_Mean  test1_SD    test2_Mean  test2_SD    Pvalue
1            Yes           6    1            3.7         1.1        0.05
1            No           5.8   0            4.3           0        0.14
2            Yes          9.6   0            4.4           0        0.69
2            No             6   1.1          7.7           1       0.001
3            Yes          7.6   0.5          5.5         0.8    2.00E+05
3            No           9.7   0            4.5           0        0.04

提前致谢

4

3 回答 3

2

你可以试试 :

library(dplyr)
df %>%
  group_by(category, calss) %>%
  summarise(pvalue = t.test(test1, test2)$p.value)
于 2020-10-31T10:01:56.693 回答
0

我认为这是您正在寻找的:

library(dplyr)
df %>% group_by(category, class) %>%
  summarise(test1_mean=mean(test1), test2_mean=mean(test2), test1_SD=sd(test1), test2_SD=sd(test2), pvalue = t.test(test1, test2)$p.value)
于 2020-10-31T10:15:03.270 回答
0

一个选项data.table

library(data.table)
setDT(df)[, .(pvalue = t.test(test1, test2)$p.value), .(category, calss)]
于 2020-10-31T19:26:46.593 回答