2015-08-31 4 views
-2

Ok У меня была эта проблема, которая была решенасоздать список групп и создать 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()'? (или 'cat (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

Смежные вопросы