r - 如何将其写入R中的循环?
问题描述
我正在尝试整理我的数据。我加载的 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')
解决方案
没有看到样本数据集就很难准确地说出来,但也许这样的事情会帮助你找到你需要的答案。
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)
推荐阅读
- javascript - Express/node cookie connect.sid 在生产中的客户端(Heroku)上缺失,尽管在 localhost 上可见
- wpf - ResourceDictionary 中的资源可访问,但样式不可访问
- c# - 等到事件被触发
- sql - ORACLE SQL 中的案例函数
- python - 在 kivy android 应用程序中的 pyatogui 上显示 Keyerror
- java - Spring Boot Webflux 中的 Unix Domain Socket 配置
- google-cloud-platform - 在 GCP 中使用 Terraform 在唯一租户节点上创建计算实例
- javascript - 当它进入视口时,如何将 data-src 更改为 src?
- android - Android默认方法可以正确获取1天1小时的日期和时间
- typescript - 错误:不支持通过“next.config.ts”配置 Next.js。请将文件替换为“next.config.js”