Как разбить столбцы условий на уровни факторов для выполнения ANOVA 2x2 - PullRequest
1 голос
/ 21 октября 2019

У меня есть следующий фрейм данных:

dat <- structure(list(Age = c(20L, 20L, 20L, 19L, 19L, 20L, 20L, 25L, 
19L, 19L), Gender = c(1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L), 
    NoAS_Ver = c(2.125, 3.25, 1.875, 2.625, 3, 2.25, 3, 2.75, 
    3.625, 1.75), NoAS_VerDemo = c(3, 3, 2.125, 3.5, 2.625, 2.5, 
    3.125, 2.625, 3.25, 3.125), AS_Ver = c(2.875, 2.875, 2, 2.875, 
    2.38, 2.875, 2, 2.875, 2.375, 1.625), AS_VerDemo = c(2.125, 
    3.625, 3.375, 2.125, 3.25, 2.5, 2.5, 2.75, 4, 2.375)), row.names = c(NA, 
10L), class = "data.frame")

Есть столбец возраста, столбец пола и 4 столбца условий. Я хочу иметь возможность выполнять повторные измерения 2X2 ANOVA, но для этого мне нужно разделить столбцы условий, чтобы я мог работать с уровнями.

Я хотел бы разделить их на «уровень задачи»(NoAs или AS) столбец, столбец «уровень представления» (Ver или VerDemo) и столбец «значения», где каждая строка является наблюдением.

Мне кажется, что это можно сделать с помощью пакета tidyrОднако я не уверен. До сих пор я пробовал:

split_dat <- dat %>%
  separate(NoAS_Ver, c(sep = "NoAS", "Ver")) %>%
  separate(AS_Ver, c(sep = "AS", "Ver")) %>%
  separate(NoAS_VerDemo, c(sep = "NoAS", "VerDemo")) %>%
  separate(AS_VerDemo, c(sep = "AS", "VerDemo"))

Однако это не то, что я ищу, поскольку генерирую много значений NA. У кого-нибудь есть какие-либо советы по поводу того, что еще я могу попробовать?

1 Ответ

0 голосов
/ 21 октября 2019

Думаю, я решил свою проблему:

split_data <- dat %>%
      gather("NoAS_Ver", "NoAS_VerDemo", "AS_Ver", "AS_VerDemo", key = "condition", value = "correctpairs") %>%
      separate(condition, into = c("task", "presentation"))
dat <- structure(list(Age = c(20L, 20L, 20L, 19L, 19L, 20L, 20L, 25L, 
19L, 19L), Gender = c(1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L), 
    CT = c("NoAS", "NoAS", "NoAS", "NoAS", "NoAS", "NoAS", "NoAS", 
    "NoAS", "NoAS", "NoAS"), Pres = c("Ver", "Ver", "Ver", "Ver", 
    "Ver", "Ver", "Ver", "Ver", "Ver", "Ver"), correctpairs = c(2.125, 
    3.25, 1.875, 2.625, 3, 2.25, 3, 2.75, 3.625, 1.75)), row.names = c(NA, 
10L), class = "data.frame")
...