基于 UTC 时间创建组
Creating groups based on UTC Time
我有一个如下所示的数据集:
str(m12)'data.frame': 48178 obs. of 10 variables:
$ created_utc : POSIXct, format: "2016-04-19 02:59:02" "2016-05-01 01:51:58" "2016-04-20 15:11:24" "2016-04-26 23:09:13" ...
$ WC : int 122 24 27 34 43 30 18 49 52 16 ...
$ Analytic : num 74.05 6.55 1.32 26.21 11.64 ...
$ Clout : num 20.6 1 35.5 38.4 40.8 ...
$ Authentic : num 80.8 91.3 92.5 14.7 87.5 ...
....
我想计算每一天每个变量的平均分。
我试过这个:
mean <- aggregate(m12[, 2:10], list(m12$created_utc), mean)
它计算每秒的平均值,但我每天都需要它。您知道实现该目标的方法吗?
抱歉没有提供示例数据。我根本不知道如何创建 POSIXct 变量。
我们需要将 'created_utc' 转换为 Date
class 这样时间部分就会被去掉。然后,将其用作分组变量,以获取一天中每一列的mean
。
aggregate(.~cbind( created_utc= as.Date(created_utc)), m12, FUN = mean,
na.rm = TRUE, na.action = NULL)
更快的方法是使用 dplyr
或 data.table
library(dplyr)
m12 %>%
group_by(created_utc = as.Date(created_utc)) %>%
summarise_each(funs(mean= mean(., na.rm = TRUE)))
或
setDT(m12)[, lapply(.SD, mean, na.rm = TRUE) , .(created_utc = as.Date(created_utc))]
我有一个如下所示的数据集:
str(m12)'data.frame': 48178 obs. of 10 variables:
$ created_utc : POSIXct, format: "2016-04-19 02:59:02" "2016-05-01 01:51:58" "2016-04-20 15:11:24" "2016-04-26 23:09:13" ...
$ WC : int 122 24 27 34 43 30 18 49 52 16 ...
$ Analytic : num 74.05 6.55 1.32 26.21 11.64 ...
$ Clout : num 20.6 1 35.5 38.4 40.8 ...
$ Authentic : num 80.8 91.3 92.5 14.7 87.5 ...
....
我想计算每一天每个变量的平均分。
我试过这个:
mean <- aggregate(m12[, 2:10], list(m12$created_utc), mean)
它计算每秒的平均值,但我每天都需要它。您知道实现该目标的方法吗?
抱歉没有提供示例数据。我根本不知道如何创建 POSIXct 变量。
我们需要将 'created_utc' 转换为 Date
class 这样时间部分就会被去掉。然后,将其用作分组变量,以获取一天中每一列的mean
。
aggregate(.~cbind( created_utc= as.Date(created_utc)), m12, FUN = mean,
na.rm = TRUE, na.action = NULL)
更快的方法是使用 dplyr
或 data.table
library(dplyr)
m12 %>%
group_by(created_utc = as.Date(created_utc)) %>%
summarise_each(funs(mean= mean(., na.rm = TRUE)))
或
setDT(m12)[, lapply(.SD, mean, na.rm = TRUE) , .(created_utc = as.Date(created_utc))]