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

时间:2019-04-12 02:50:26

标签: r loops data-manipulation

我正在尝试整理我的数据。我加载的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')

1 个答案:

答案 0 :(得分: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)