浏览其他问题我几乎解决了我的问题,但在最后一关失败了......
使用 R
我有一个数据帧(d),我通过 plyr 包中的 ddply 传递一个函数(fd),这将按预期返回一个数据帧。在我的实际数据框中,我想将大量变量传递给函数,而不是多次调用它,我还想将相关的 col.names 提供给输出数据表。试图一步一步地做下面的工作......
样本数据:
d<-structure(list(date.time = structure(c(1367943040, 1367950947,
1367950965, 1367950987, 1367951028, 1367951045, 1367959536, 1367960275,
1367960413, 1367985859, 1368005216, 1368005233, 1368011698, 1368011931,
1368012615, 1368033855), tzone = "", class = c("POSIXct", "POSIXt"
)), station = c("L5", "L5", "L5", "L5", "L5", "L5", "L7", "L7",
"L7", "L7", "L5", "L5", "L7", "L7", "L7", "L7"), code = c(10891,
10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891,
10888, 10888, 10888, 10888, 10888, 10888)), .Names = c("date.time",
"station", "code"), row.names = c(2421L, 2466L, 2467L, 2468L,
2469L, 2470L, 2472L, 2473L, 2474L, 2812L, 2837L, 2838L, 2859L,
2860L, 2861L, 3219L), class = "data.frame")
我有一个函数来查找事件的第一次发生并返回该事件发生时的日期时间:
fd<- function(x, var){
time<- (as.POSIXct(x$date.time [x$station == var] [1]))
paste (as.POSIXct (time, origin="1970-1-1", tz='UTC'))
}
我将它传递给数据框:
ddply(d,'code',fd,"L7")
查找第一次记录站“L7”的日期时间并返回数据帧:
code V1
1 10888 2013-05-08 12:14:58
2 10891 2013-05-07 21:45:36
有没有更有效的方法来调用多个函数参数,而不是编写多个函数调用。还要命名该列,在“V1”上方会读取“L7”这样的东西(不起作用)......
ddply(d,'code',fd,c("L7", "F5"))
到目前为止,我所拥有的并在一定程度上起作用的是:
data.frame(
ddply(d,'code',fd,"L7"),
ddply(d,'code',fd,"L5"))
回报:
code V1 code.1 V1.1
1 10888 2013-05-08 12:14:58 10888 2013-05-08 10:26:56
2 10891 2013-05-07 21:45:36 10891 2013-05-07 17:10:40
如您所见,重复“代码”
而且colnames是不合适的,我最后想要的是一个data.frame:
code M1 M2
1 10888 2013-05-08 12:14:58 2013-05-08 10:26:56
2 10891 2013-05-07 21:45:36 2013-05-07 17:10:40