У меня есть вывод TukeyHSD ниже (превращен в фрейм данных):
df <- read.table(header=TRUE, stringsAsFactors=FALSE, text="
comp diff lwr upr p_adj
duration:5-duration:5 2.125000e-01 -0.13653578 0.5615358 0.4873403
speed:5-probability:5 2.250000e-01 -0.12403578 0.5740358 0.4219408
probability:10-probability:5 3.875000e-01 0.03846422 0.7365358 0.0206341
duration:10-duration:5 6.875000e-01 0.33846422 1.0365358 0.0000020
speed:10-probability:5 2.250000e-01 -0.12403578 0.5740358 0.4219408
probability:60-probability:5 1.250000e-02 -0.31064434 0.3356443 0.9999974
probability:10-probability:60 1.250000e-02 -0.31064434 0.3356443 0.9999974
probability:10-speed:5 1.250000e-02 -0.31064434 0.3356443 0.9999974
")
Я хочу что-то вроде ниже:
duration5 probability5 speed5 duration10 probability10 speed10
duration5
probability5 p
speed5 p p
duration10 p p p
probability10 p p p p
speed10 p p p p p
Я уже пробовал подобное решение, предложенное здесь .
Я изменил код для распознавания разбиения на дефисы "-", но он не работает (см. Ниже). Если бы кто-то мог выяснить, почему он не выполняется или альтернативный метод, я был бы очень признателен!
transformTable <- function(tbl, metric) {
# Takes table of TurkeyHSD output metrics
# and transforms them into a pairwise comparison matrix.
# tbl is assumed to be a data.frame or tibble,
# var is assumed to be a character string
# giving the variable name of the metric in question
# (here: "diff", "lwr", "upr", or "p_adj")
tbl <- tbl %>%
# Split comparison into individual variables
mutate(
Var1 = sub("\\-.*", "", comp), #before hypen
Var2 = sub(".*-", "", comp)) # after hyphen%>%
# Only keep relevant fields
select(Var1, Var2, matches(metric)) %>%
# Filter out NA's
filter(!is.na(metric)) %>%
# Make into "wide" format using Va r2
spread_(key = 'Var2', value = metric, fill = '')
# Let's change the row names to Var1
row.names(tbl) <- tbl$Var1
# And drop the Var1 column
tbl <- select(tbl, -Var1)
return(tbl)
}
transformTable(df,'p_adj')