Не совсем точно, как сформулировать то, что я ищу, но у меня есть основной набор данных (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
EDIT
Наличие 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
, но это не интуитивно понятно.