2014-09-10 32 views
0

我需要創建和R函數,將數據框和列名稱作爲參數(應該有至少兩個列名參數列表,也許更多)。然後給定數據框,我需要根據給定的列名創建一個json格式的輸出。例如,如何創建一個自定義json輸出從R函數與數據框和列名作爲參數

這是我的DF:

structure(list(DateTime = structure(1:8, .Label = c("8/24/2014 15:20", 
"8/24/2014 15:55", "8/24/2014 16:04", "8/24/2014 16:18", "8/24/2014 16:27", 
"8/24/2014 16:42", "8/24/2014 16:56", "8/24/2014 17:10"), class = "factor"), 
    Server1 = c(6.09, 4.54, 5.03, 4.93, 6.27, 4.59, 5.91, 4.53 
    ), Server2 = c(5.7, 4.38, 4.52, 4.61, 4.18, 4.61, 4.37, 4.3 
    ), Server3 = c(5.21, 5.33, 4.92, 5.56, 5.62, 6.73, 4.76, 
    4.59)), .Names = c("DateTime", "Server1", "Server2", "Server3" 
), class = "data.frame", row.names = c(NA, -8L)) 

我需要這個函數返回的輸出:

[{"name":"Server1","data":[[18/24/2014 15:20,6.09],[8/24/2014 15:55,4.54],[8/24/2014 16:04,5.03]]}, 
{"name":"Server2","data":[[18/24/2014 15:20,7.7],[8/24/2014 15:55,4.38],[8/24/2014 16:04,4.52]]}, 
{"name":"Server3","data":[[18/24/2014 15:20,5.21],[8/24/2014 15:55,5.33],[8/24/2014 16:04,4.92]]}] 

任何想法如何,我將開始與這個?

回答

2

假設您的數據幀被命名爲dd,然後

library(rjson) 
library(reshape2) 

mm <- melt(dd) 
ss <- split(mm, mm$variable) 

poo <- unname(Map(function(n,x) 
    list(name=n, data=unname(lapply(split(x, 1:nrow(x)), function(x) { 
     list(x$DateTime, x$value) 
}))), names(ss),ss)) 
cat(toJSON(poo)) 

這一點讓

[{"name":"Server1","data":[["8/24/2014 15:20",6.09],["8/24/2014 15:55",4.54],["8/24/2014 16:04",5.03],["8/24/2014 16:18",4.93],["8/24/2014 16:27",6.27],["8/24/2014 16:42",4.59],["8/24/2014 16:56",5.91],["8/24/2014 17:10",4.53]]}, 
{"name":"Server2","data":[["8/24/2014 15:20",5.7],["8/24/2014 15:55",4.38],["8/24/2014 16:04",4.52],["8/24/2014 16:18",4.61],["8/24/2014 16:27",4.18],["8/24/2014 16:42",4.61],["8/24/2014 16:56",4.37],["8/24/2014 17:10",4.3]]}, 
{"name":"Server3","data":[["8/24/2014 15:20",5.21],["8/24/2014 15:55",5.33],["8/24/2014 16:04",4.92],["8/24/2014 16:18",5.56],["8/24/2014 16:27",5.62],["8/24/2014 16:42",6.73],["8/24/2014 16:56",4.76],["8/24/2014 17:10",4.59]]}] 

這似乎符合你想要的東西。 這不是超級漂亮,因爲你真的沒有辦法以rsjon不一定喜歡的方式重塑你的數據。

+0

這是好的,但我的要求是,它需要將整個事情包裝在一個函數中,這需要數據框和列名作爲參數。 – user1471980 2014-09-10 16:54:54

+1

我假設你知道如何在R中編寫一個函數。我只關注更難的變換部分。這不是一個定製的代碼寫作服務。您可以根據您的特定需求自定義此代碼。如果你的問題包括你打算如何調用這個新函數,或者你會調用什麼來生成示例輸出,那本來會更好。 – MrFlick 2014-09-10 16:58:45

+0

謝謝我將與此合作。 – user1471980 2014-09-10 17:06:42

相關問題