【发布时间】:2017-07-17 16:19:23
【问题描述】:
问题: 如何从现有的数据集生成新的数据集,基本上是从长到宽的reshape,但要复杂一些。
我有大量数据,我在下面提供了一个简化版本:
id <- c(1,2,3,4,5)
job <- c(11,12,11,12,13)
sex <- c(0,1,0,1,0)
country <- c(1,2,3,2,1)
data <- data.frame(id, job, sex, country)
所需数据: 我想要一个工作及其居住者的数据集,如下所示: 在工作=11 中,我有 2 个性别==0 和 1 个出生在国家==1 和 1 个出生在国家==3
所以,新的数据集应该是这样的:
jobs jobs_sex0 jobs_sex1 jobs_country1 jobs_country2 jobs_country3
1 11 2 0 1 0 0
2 12 0 2 0 2 0
3 13 1 0 0 0 1
我直觉这可以通过 tapply 实现,但我不确定如何。
这个我试过了,还是不行:
tapply(occupation[sex==1],sex[sex==1], sum)
aggregate(occupation, list(sex), fun=sum)
编辑: 我认为这个 Q 不是 Transpose / reshape dataframe without "timevar" from long to wide format 的重复项,因为我遇到的问题是我需要用不同的级别数重塑不同的因子变量......从所谓的重复 Q 中应用答案不起作用......
【问题讨论】: