Как сохранить несколько результатов теста в красивой таблице - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь сделать мой рабочий процесс немного более эффективным. Я храню свои данные в листе Excel и импортирую их в свою студию. С этими данными я провел несколько U-тестов Манна-Уитни. Я хочу сохранить важные результаты в матрице и распечатать их в таблице, используя функцию kable в r markdown (bookdown).

do2 <- read_excel("Excel/Daten_Ordnungseffekte.xlsx")
do2$ID = factor(do2$ID)

w1 <- wilcox.test(data$P1 ~ do2$Order)
w2 <- wilcox.test(data$P2 ~ do2$Order)
w3 <- wilcox.test(data$A1 ~ do2$Order)
w4 <- wilcox.test(data$A2 ~ do2$Order)

t1 <- tapply(data$P1,data$Order,mean)
t2 <- tapply(data$P1,data$Order,mean)
t3 <- tapply(data$A1,data$Order,mean)
t4 <- tapply(data$A2,data$Order,mean)

Тогда я в страхе. Как я могу получить результаты в таблице, похожей на эту?

|       | N\(Order 1\) | N\(Order 2\) | Mean | U | Sig |
|-------|--------------|--------------|------|---|-----|
| w1,t1 | 13           | 23           |      |   |     |
| w1,t2 | 13           | 23           |      |   |     |
| w3,t3 | 13           | 23           |      |   |     |
| w4,t4 | 13           | 23           |      |   |     |

Большое спасибо, ребята! Ты мне очень помогаешь!

Редактировать: данные добавлены с помощью dput

 dput(do2)
structure(list(ID = structure(1:36, .Label = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", 
"25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", 
"36"), class = "factor"), Group = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2), Order = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
1, 1, 1, 1), P1 = c(0.0719, 0.0817, 0.0901, 0.0778, 
0.0725, 0.0726, 0.0935, 0.0971, 0.0932, 0.0796, 0.0885, 0.0911, 
0.0808, 0.0749, 0.0617, 0.1424, 0.0862, 0.085, 0.1239, 0.1199, 
0.0624, 0.0883, 0.0975, 0.1108, 0.0959, 0.0813, 0.0778, 0.0815, 
0.0971, 0.0888, 0.0673, 0.089, 0.0755, 0.0646, 0.0691, 0.1037
), P2 = c(0.1383, 0.1894, 0.1206, 0.1816, 0.1139, 0.1549, 
0.1582, 0.2333, 0.1157, 0.1125, 0.1091, 0.1286, 0.1464, 0.13, 
0.1238, 0.2646, 0.2175, 0.197, 0.2052, 0.2533, 0.1349, 0.131, 
0.2838, 0.2188, 0.1377, 0.1048, 0.2221, 0.1517, 0.2149, 0.1419, 
0.1754, 0.1445, 0.1606, 0.1788, 0.201, 0.169), A1 = c(0.0889, 
0.0821, 0.0841, 0.0845, 0.0982, 0.091, 0.1285, 0.0842, 0.0601, 
0.1067, 0.0705, 0.0717, 0.0741, 0.1069, 0.0603, 0.129, 0.0877, 
0.0722, 0.0874, 0.1033, 0.0603, 0.0833, 0.0916, 0.0889, 0.1078, 
0.0788, 0.0648, 0.0499, 0.0848, 0.0784, 0.0743, 0.1018, 0.089, 
0.0683, 0.0865, 0.0985), A2 = c(0.0084, 0.0171, 0.0068, 
0.0078, 0.0091, 0.0112, 3e-04, 0.0122, 0.002, 0.016, 0.0076, 
0.0033, 0.0058, 0.0211, 0.0011, 0.0093, 0.0167, 0, 0.004, 0.0039, 
0, 0.0061, 0.0153, 0.0024, 0, 0.0014, 0.002, 0, 0, 0.0062, 0, 
0.009, 0.0062, 0, 0, 0.0326)), row.names = c(NA, -36L), class = c("tbl_df", 
"tbl", "data.frame"))

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете попробовать Tidyverse

library(tidyverse)
library(kableExtra)
library(broom)

do2 %>% 
  gather(EP, value, -ID:-Order) %>% # transform the data to long format
  nest(data = -EP) %>% 
  mutate(test = map(data, ~wilcox.test(value ~ Order, data = ., exact =F) %>% broom::tidy()),
         mean = map(data, ~mean(.$value)),
         n = map(data, nrow)) %>% 
  unnest(cols = c(EP, test, mean, n)) %>% 
  select(EP, mean, n, p.value) %>% 
  kableExtra::kable(format = "html") %>%  
  kableExtra::kable_styling()
...