如何创建一个自定义json输出从R函数与数据框和列名作为参数
问题描述:
我需要创建和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]]}]
任何想法如何,我将开始与这个?
答
假设您的数据帧被命名为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不一定喜欢的方式重塑你的数据。
这是好的,但我的要求是,它需要将整个事情包装在一个函数中,这需要数据框和列名作为参数。 – user1471980 2014-09-10 16:54:54
我假设你知道如何在R中编写一个函数。我只关注更难的变换部分。这不是一个定制的代码写作服务。您可以根据您的特定需求自定义此代码。如果你的问题包括你打算如何调用这个新函数,或者你会调用什么来生成示例输出,那本来会更好。 – MrFlick 2014-09-10 16:58:45
谢谢我将与此合作。 – user1471980 2014-09-10 17:06:42