如何将其写入R中的循环?

问题描述 投票:-2回答:1

我正在尝试安排我的数据。我加载的csv文件包含一个地区的15个区域的结果。行数为150,因为10个候选者的名称对15个区域中的每一个都重复。

我的目标是将10个候选人的名字作为列而不重复他们的名字,并将每个候选人的结果作为值。我使用下面的代码,但是我必须做15次因为我以10为间隔剪切数据以提取一个区域的结果。对于“binondov”来说也是如此。我必须以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')
r loops data-manipulation
1个回答
0
投票

如果没有看到样本数据集,很难确切地说,但是这样的事情可能会帮助您获得所需的答案。

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)
© www.soinside.com 2019 - 2024. All rights reserved.