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

`badtags = ['.png', '.gif', 'jpg', 'jpeg']
 goodurls = ['https://', 'http://']
 for line in string:
     for word in line.strip().split():
         if(word[0:7] == 'https://' or word[0:6] == 'http://'):
             if(not word[-4:] in badtags):
                 // replace logic
`

Это довольно простой способ сделать это, вам, возможно, придется использовать обычный цикл итерации для цикла, чтобы иметь возможность индексировать ваш исходный массив.

-1
задан Audrey 19 January 2019 в 01:30
поделиться

1 ответ

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))

Примечание

[ 1114] Вход в воспроизводимом виде предполагается:

DF <- data.frame(Code = rep(c(1011, 2011), each = 14), 
  Transcriber = rep(c("Anna", "David", "Susan", "Anna"), each = 7),
  Errors = 1:28)
0
ответ дан G. Grothendieck 19 January 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: