【发布时间】:2019-05-03 15:58:43
【问题描述】:
不完全确定如何表达我要查找的内容,但我有一个主数据集(1000 行)和另一个详细信息文件(1000 行)。这是一对多的关系,我想加入表格,但我不想拥有多行主数据集,而是想基于详细文件中的列创建列。
以下是我正在寻找的示例:
> maindata <- data.frame(ID = c(1,2,3,4), Customer = c("Bob","Mary","Bill","Steve"), stringsAsFactors = FALSE)
> maindata
ID Customer
1 Bob
2 Mary
3 Bill
4 Steve
> reference <- data.frame(ID = c(1,1,1,1,2,2,4), Code = c("Credit","Price","Cust","Task","Credit","Task","Cust"), Num = c(5,4,3,8,3,4,6), stringsAsFactors = FALSE)
> reference
ID Code Num
1 Credit 5
1 Price 4
1 Cust 3
1 Task 8
2 Credit 3
2 Task 4
4 Cust 6
我希望它转换为:
> IdealOutput
ID Customer Credit Price Cust Task
1 1 Bob 5 4 3 8
2 2 Mary 3 NA NA 4
3 3 Bill NA NA NA NA
4 4 Steve NA NA 6 NA
编辑
有 2 个标题列和 2 个值列。
> reference <- data.frame(ID = c(1,1,1,1,2,2,4), Code = c("Credit","Price","Cust","Task","Credit","Task","Cust"), Num = c(5,4,3,8,3,4,6), Code2 = c("Banana","Apple","Pear","Grapes","Pear","Grapes","Banana"), Num2 = c(2,5,4,7,3,6,5), stringsAsFactors = FALSE)
> reference
ID Code Num Code2 Num2
1 1 Credit 5 Banana 2
2 1 Price 4 Apple 5
3 1 Cust 3 Pear 4
4 1 Task 8 Grapes 7
5 2 Credit 3 Pear 3
6 2 Task 4 Grapes 6
7 4 Cust 6 Banana 5
我想把它改成:
> IdealOutput
ID Customer Credit Price Cust Task Banana Apple Pear Grapes
1 1 Bob 5 4 3 8 2 5 4 7
2 2 Mary 3 NA NA 4 NA NA 3 6
3 3 Bill NA NA NA NA NA NA NA NA
4 4 Steve NA NA 6 NA 5 NA NA NA
我可以做两个单独的spreads,然后是Left_join,但这并不直观。
【问题讨论】: