【发布时间】:2016-03-23 15:57:29
【问题描述】:
假设有跨选举年、地区(或州)和政党的候选人的描述性数据。这些数据目前在“街道”级别(例如投票区)进行分解。
目前,当我尝试将数据汇总到地区级别时,各种方法返回的计数不准确。换句话说,聚合没有充分考虑到候选人在每个地区每年多次出现在数据中。我需要的是一个特定党派出现在特定地区的总次数,而不管选区级别的重复/重复信息如何。换句话说,我需要一个结果来显示每个独特的候选人年对子的地区年对子的党派人数。 (注意:候选人可能会在选举年和/或选区重复,但可能有不同的政党;Henry Clay 在 1836 年和 1840 年)。
我的问题是:我如何聚合数据以通过将其他两个因素(年份和候选人姓名 [ID ])?
数据结构示例:
year<-rbind("1836", "1836", "1836", "1836",
"1840", "1840", "1840", "1840",
"1844", "1844", "1844", "1844",
"1848", "1848", "1848", "1848")
candidate<-rbind("Henry Clay", "Henry Clay",
"Daniel Webster",
"Daniel Webster", "Henry Clay",
"Henry Clay", "Daniel Webster",
"Daniel Webster",
"Millard Fillmore",
"Millard Fillmore",
"Martin Van Buren",
"Martin Van Buren",
"Millard Fillmore",
"Millard Fillmore",
"Martin Van Buren",
"Martin Van Buren")
party<-rbind("Democratic-Republican",
"Democratic-Republican", "Whig",
"Whig", "National Republican",
"National Republican", "Whig",
"Whig", "Know-Nothing",
"Know-Nothing", "Democrat",
"Democrat", "Know-Nothing",
"Know-Nothing", "Democrat",
"Democrat")
district<-rbind("Alaska", "Alaska", "Vermont",
"Vermont", "Alaska", "Alaska",
"Vermont", "Vermont", "Alaska",
"Alaska", "Vermont", "Vermont",
"Alaska", "Alaska", "Vermont",
"Vermont")
precinct<-rbind("Pre1", "Pre2", "Pre1", "Pre2",
"Pre1", "Pre2", "Pre1", "Pre2",
"Pre1", "Pre2", "Pre1", "Pre2",
"Pre1", "Pre2", "Pre1", "Pre2")
sample<-as.data.frame(cbind(year, candidate, party, district,
precinct))
聚合数据的不同方法示例:
表格
party.counts1<-data.frame(table(sample$V3, sample$V1, sample$V4))
聚合:
尝试 2a 接近所需的最终结果,但返回的计数未指定因子级别(政党),并且仍然基于政党候选人在选区级别的外观“过度计算”政党区域数据给定年份。
party.counts2<-aggregate(sample$V3, by=list(sample$V4, sample$V1), FUN=length)
party.counts2a<-aggregate(sample$V3~sample$V1:sample$V4:sample$V2, data=sample, FUN=length)
重塑
重塑示例显示与之前的聚合 2a 尝试类似的问题。
library(reshape2)
mdata <- melt(sample, id.vars=c("V1", "V2", "V4", "V5"), measure.vars=c("V3"))
party.counts3<-dcast(mdata, value~V1:V2:V4, length)
再次,我的问题是:我如何聚合数据以通过将其他两个因素(年份和候选人姓名)分组来获得另一个因素(地区)每个级别的因素(政党)的计数[ID])?
【问题讨论】:
标签: r aggregate grouping apply tabular