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