Как записать это в цикл в R? - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь упорядочить свои данные. CSV-файл, который я загружаю, содержит результаты 15 участков для одного населенного пункта. Количество строк составляет 150, потому что имена 10 кандидатов повторяются для каждого из 15 участков.

Моя цель - сделать имена 10 кандидатов в виде столбцов, не повторяя их имена и с результатами для каждого кандидата в качестве значений. Я использую приведенный ниже код, однако я должен сделать это 15 раз, потому что я вырезал свои данные с интервалами в 10, чтобы извлечь результаты одного участка. То же самое для "бинондов". Я должен урезать свои данные с интервалом в 8, потому что на каждый участок приходится 8 кандидатов.

Есть ли способ написать мой код в виде цикла? Спасибо!

binondop1 <- binondop[1:10,]
binondop1a <- binondop1[order(binondop1[,2]),]
binondov1 <- binondov[1:8,]
binondov1a <- binondov1[order(binondov1[,2]),]
colnames(binondop1a) = colnames(binondov1a) = 
c('X', 'Candidate', 'Party', 'Vote', 'Percentage')
binondo1 <- rbind(binondop1a, binondov1a)
binondo <- rbind(t(binondo1$Vote), t(binondo2$Vote),
            t(binondo3$Vote), t(binondo4$Vote),
            t(binondo5$Vote), t(binondo6$Vote),
            t(binondo7$Vote), t(binondo8$Vote),
            t(binondo9$Vote), t(binondo10$Vote),
            t(binondo11$Vote), t(binondo12$Vote),
            t(binondo13$Vote),t(binondo14$Vote),
            t(binondo15$Vote))
colnames(binondo) <- c('Acosta', 'Aquino', 'DLReyes', 'EEjercito',
            'Gordon', 'Madrigal', 'Perlas', 'Teodoro',
            'Villanueva', 'Villar', 'Binay', 'Chipeco',
            'Fernando', 'Legarda', 'Manzano', 'Roxas',
            'Sonza', 'Yasay')

1 Ответ

0 голосов
/ 12 апреля 2019

Трудно сказать точно, не видя набора данных, но, возможно, что-то подобное поможет вам найти ответ на свой вопрос.

library(dplyr)
library(tidyr)

df <- data.frame(Candidate = c(rep('Acosta',3), rep('Aquino',3), rep('DLReyes',3)), 
                 Party = c('R','R','R','L','L','L','D','D','D'),
                 Vote = rep(c('A','B','C'),3), 
                 Percentage = c(5,4,2,6,8,3,1,3,2))

df2 <- df %>% 
       mutate(Candidate = paste0(Candidate, ' (', Party, ')')) %>%
       select(-Party) %>%
       spread(Candidate, Percentage)
...