Как мне реорганизовать мой фрейм данных для запуска альфа Криппендорфа? - PullRequest
0 голосов
/ 19 января 2019

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

Вот как выглядит мой фрейм данных:

enter image description here

То есть каждый участник имеет 7 рядов (для 7 наблюдений). Каждое наблюдение оценивали два разных человека. Мне бы хотелось, чтобы у моего информационного кадра было три столбца: Код, Transcriber1, Transcriber 2. В «Transcriber1» отображаются оценки ошибок первого транскрибера, независимо от его имени, а в разделе «Transcriber2» - оценки для второго. То есть я бы хотел, чтобы это выглядело так:

enter image description here

Есть мысли? Буду очень признателен за любую помощь!

Спасибо, сообщество!

1 Ответ

0 голосов
/ 19 января 2019

1) dplyr / tidyr Предполагая, что ввод DF такой же, как в примечании, в конце создайте столбец Transcriber со значениями Transcriber1 и Transcriber2 и столбец Seq с последовательностьючисла и, наконец, используйте spread для преобразования в широкую форму.

library(dplyr)
library(tidyr)

DF %>%
  group_by(Code) %>%
  mutate(Transcriber = as.numeric(factor(Transcriber, levels = unique(Transcriber)))) %>%
  group_by(Transcriber = paste0("Transcriber", Transcriber), add = TRUE) %>%
  mutate(Seq = seq_along(Errors)) %>%
  ungroup %>%
  spread(Transcriber, Errors) %>%
  select(-Seq)

, дающий:

# A tibble: 14 x 3
    Code Transcriber1 Transcriber2
   <dbl>        <int>        <int>
 1  1011            1            8
 2  1011            2            9
 3  1011            3           10
 4  1011            4           11
 5  1011            5           12
 6  1011            6           13
 7  1011            7           14
 8  2011           15           22
 9  2011           16           23
10  2011           17           24
11  2011           18           25
12  2011           19           26
13  2011           20           27
14  2011           21           28

2) База R Решение, использующее только базу R, будетбыть:

make_factor <- function(x) factor(x, levels = unique(x))
DF2 <- transform(DF, 
  Transcriber = paste0("Transcriber", ave(as.numeric(Transcriber), Code, FUN = make_factor)),
  Seq = ave(Errors, Code, Transcriber, FUN = seq_along))
r <- reshape(DF2, dir = "wide", idvar = c("Seq", "Code"), timevar = "Transcriber")[-2]
names(r) <- sub("Errors.", "", names(r))

Примечание

Предполагается, что ввод в воспроизводимой форме будет:

DF <- data.frame(Code = rep(c(1011, 2011), each = 14), 
  Transcriber = rep(c("Anna", "David", "Susan", "Anna"), each = 7),
  Errors = 1:28)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...