2015-08-31 162 views
-2

好,我有這個問題已經解決了按組創建列表和創建JSON

combine data in depending on the value of one column

我一直在努力適應一個更復雜的問題的解決方案,但我一直沒能來用該解決方案,而不是2列,我有3

df <- structure(list(year = c(2000L, 2001L, 2002L, 2003L, 2001L, 2002L), group = c(1L, 1L, 1L, 1L, 2L, 2L), sales = c(20L, 25L, 23L, 30L, 50L, 55L), expenses = c(19L, 19L, 20L, 15L, 27L, 30L)), .Names = c("year", "group", "sales", "expenses"), class = "data.frame", row.names = c(NA, -6L)) 

    year group sales expenses 
1 2000  1 20  19 
2 2001  1 25  19 
3 2002  1 23  20 
4 2003  1 30  15 
5 2001  2 50  27 
6 2002  2 55  30 

我需要相同的輸出作爲第一個問題,但不是僅僅銷售我還需要在JSON文件費用

[{"group": 1, "sales":[[2000,20],[2001, 25], [2002,23], [2003, 30]], "expenses":[[2000,19],[2001, 19], [2002,20], [2003, 15]]}, 
{"group": 2, "sales":[[2001, 50], [2002,55]], "expenses":[[2001, 27], [2002,30]]}] 
+0

你可以做'deparse(your_data)'並粘貼它的重現性嗎? – timelyportfolio

+0

@timelyportfolio'dput()'? (或'貓(deparse())',mebbe?) – hrbrmstr

+0

從以前的答案中應該很清楚如何做到這一點 - 重讀答案並嘗試找出答案。 – jeremycg

回答

0
toJSON(setDT(df1)[, list(sales= paste0('[',toString(sprintf('[%d,%d]',year, sales)),']'), 
        expenses= paste0('[',toString(sprintf('[%d,%d]', year, expenses)),']')), by = group]) 

試試這個。它與akrun的答案沒有什麼不同。 combine data in depending on the value of one column

+0

在「複製」問題中增加了一個「dplyr」解決方案;自投票以來無法添加 – timelyportfolio