R多列分组方式

R多列分组方式,r,group-by,transform,shiny,strsplit,R,Group By,Transform,Shiny,Strsplit,我有一个数据集x_输出,如下所示: timestamp city wait_time weekday 2015-07-14 09:00:00 Boston 1.4 Tuesday 2015-07-14 09:01:00 Boston 2.5 Tuesday 2015-07-14 09:02:00 Boston 2.8 Tuesday 2015-07-14 09:03:00 Boston 1.6 Tuesday 2015-07

我有一个数据集
x_输出
,如下所示:

          timestamp   city wait_time weekday
2015-07-14 09:00:00 Boston       1.4 Tuesday
2015-07-14 09:01:00 Boston       2.5 Tuesday
2015-07-14 09:02:00 Boston       2.8 Tuesday
2015-07-14 09:03:00 Boston       1.6 Tuesday
2015-07-14 09:04:00 Boston       1.5 Tuesday
2015-07-14 09:05:00 Boston       1.4 Wednesday
我想找出平均等待时间,按城市、工作日和时间分组。基本上,考虑到你所在的城市,周一的平均等待时间是多少?那么星期二呢

我在创建给定的
x_输出$timestamp
time
列时遇到困难;我目前正在使用:

x_output$time <- strsplit(as.character(x_output$timestamp), split = " ")[[1]][2]

x_输出$timeMean
wait_time
按城市、工作日、时间分组:

library(plyr)
ddply(x_output, .(city, weekday, time), summarize, avg=mean(wait_time))
如果需要
data.table

x_output[, list(avg=mean(wait_time)), .(city, weekday, time)]
我在创建给定的
x\u输出$timestamp的
time
列时遇到困难

那么,
time
列应该包含什么内容呢?只是
时间戳的时间部分
timestamp
是POSIXct还是字符串

如果是POSIXct,则您可以仅转换为字符,并指定时间格式:

x_output$time <- as.character(x_output$timestamp, '%H:%M')
# or as.factor(as.character(...)) if you need it to be a factor.
# in data.table: x[, time:=as.character(timestamp, '%H:%M')]

这将给你“HH:MM:SS”作为你的时间格式。如果您想要自定义时间格式,最好将
时间戳
字符串转换为POSIXct,并返回到前面提到的特定格式。

平均
等待时间
按城市、工作日、时间分组:

library(plyr)
ddply(x_output, .(city, weekday, time), summarize, avg=mean(wait_time))
如果需要
data.table

x_output[, list(avg=mean(wait_time)), .(city, weekday, time)]
我在创建给定的
x\u输出$timestamp的
time
列时遇到困难

那么,
time
列应该包含什么内容呢?只是
时间戳的时间部分
timestamp
是POSIXct还是字符串

如果是POSIXct,则您可以仅转换为字符,并指定时间格式:

x_output$time <- as.character(x_output$timestamp, '%H:%M')
# or as.factor(as.character(...)) if you need it to be a factor.
# in data.table: x[, time:=as.character(timestamp, '%H:%M')]


这将给你“HH:MM:SS”作为你的时间格式。如果你想做一个自定义的时间格式,最好将你的
timestamp
字符串转换成POSIXct并返回到前面提到的特定格式。

类似
df%>%groupby(city,weekday)%%>%mutate(MeaD=mean(wait_time))
dplyr
但请发布有用的代码。您的代码只有
NA
s等待时间,并且只有一个城市和一天。这个日期对你来说是不可能的。很抱歉!现在修好了。我将很快对此进行测试。应该更像
sapply(strsplit(as.character(x_output$timestamp),split=“”),“[”,2)
从列表中的每个向量中提取第二个元素。根据
timestamp
分组的标准是什么?每天?每12小时?每周?还有一件事:你在问3件事(稍微无关),而标题只是关于分组数据。也许您最好打开另一个问题(或进行搜索),了解如何将
timestamp
列解析为日期和时间。类似于
df%>%groupby(city,weekday)%%>%mutate(MeaD=mean(wait_time))
使用
dplyr
但是请发布有用的代码。你的代码只有
NA
等待时间,只有一个城市和一天。这个日期对你来说是不可能的。很抱歉!现在修复了。我将很快测试这个问题。应该更像
sapply(如.character(x_output$timestamp),split=“”,“[”,2)
从列表中的每个向量中提取第二个元素。根据
时间戳进行分组的标准是什么?每天?每12小时?每周?还有一件事:你在问3件事(稍微无关),而标题只是关于分组数据。也许你最好打开另一个问题(或进行搜索)关于如何将
timestamp
列解析为日期和时间。timestamp->time运行良好。我对多个groupby尝试了这两种方法。使用
ddplyr
,我收到了
属性错误(out)在这种情况下,您必须提供一个可复制的示例。您在问题中提供的数据在我提供的代码上运行良好,但每个城市和时间只有一个记录。我对从我的工作计算机随机连接到神秘IP感到有点不确定(我无论如何都尝试了,但它超时-可能是防火墙)。在任何情况下,问题似乎与您的特定数据有关,因此如果其中存在错误,您必须缩小范围。好的,我将很快对此进行研究,如果无法使其工作,则将.csv发布到其他位置。在我试图解决此问题时,以下是迄今为止的数据集和代码:时间戳->时间工作正常。我尝试d多个groupby的两种方法。使用
ddplyr
,我收到属性中的
错误(out)在这种情况下,您必须提供一个可复制的示例。您在问题中提供的数据在我提供的代码上运行良好,但每个城市和时间只有一个记录。我对从我的工作计算机随机连接到神秘IP感到有点不确定(我无论如何都尝试了,但它超时-可能是防火墙)。在任何情况下,问题似乎与您的特定数据有关,因此,如果其中存在格式错误,您必须缩小范围。好的,我将很快对此进行研究,如果无法使其正常工作,则将.csv发布到其他地方。在我试图解决此问题的同时,以下是迄今为止的数据集和代码: