我有一个包含numeric
和POSIXct
数据的data.frame:
library(tidyr)
library(dplyr)
library(lubridate)
df <- data.frame(A=c(1,2,3), B=c(now(), now()-days(1), now()-days(2)))
df
A B
1 1 2015-09-02 00:06:58
2 2 2015-09-01 00:06:58
3 3 2015-08-31 00:06:58
我希望以下列格式计算有关此数据表的一些统计信息:
Stats A B
1 max 3 2015-09-02 00:06:58
2 min 1 2015-08-31 00:06:58
这就是我的尝试:
df %>% summarise_each(funs(min, max, median), A:B) %>%
gather(Stats.Attribute, Value) %>%
separate(Stats.Attribute, c('Attribute', 'Stats')) %>%
spread(Attribute, Value)
但输出有警告信息,并且在运行gather
时将时间戳转换为数值,
Stats A B
1 max 3 1441177618
2 min 1 1441004818
Warning message:
attributes are not identical across measure variables; they will be dropped
我希望在第一步中保留原始格式的min
和max
时间戳:
df %>% summarise_each(funs(min, max, median), A:B)
A_min B_min A_max B_max
1 1 2015-08-31 00:06:58 3 2015-09-02 00:06:58
我该怎么做?