在r中的新列中具有if条件的for循环
我是R的新手,我正在尝试根据每5分钟的时间划分数据。例如,我有从480到1200分钟开始的数据,如bellow minutes,我希望每5分钟将这些数据分组在一起,并使用相同的名称,如组1、2、3、,。。。。并在新列中显示该组名称 请让我知道我如何可以轻松做到这一点,因为我有一个大数据,几乎不可能手动完成在r中的新列中具有if条件的for循环,r,loops,grouping,R,Loops,Grouping,我是R的新手,我正在尝试根据每5分钟的时间划分数据。例如,我有从480到1200分钟开始的数据,如bellow minutes,我希望每5分钟将这些数据分组在一起,并使用相同的名称,如组1、2、3、,。。。。并在新列中显示该组名称 请让我知道我如何可以轻松做到这一点,因为我有一个大数据,几乎不可能手动完成 time Dates minutes 08:03:00 01/04/2014 483 08:00:00 01/04/2014 480 08:00:00 01/0
time Dates minutes
08:03:00 01/04/2014 483
08:00:00 01/04/2014 480
08:00:00 01/04/2014 480
08:00:00 01/04/2014 480
08:00:00 01/04/2014 480
08:00:00 01/04/2014 480
08:02:00 01/04/2014 482
08:03:00 01/04/2014 483
08:02:00 01/04/2014 482
08:06:00 01/04/2014 486
08:11:00 01/04/2014 491
欢迎来到StackOverflow!请尝试在您的问题中加入一些示例数据 这里有些东西应该有用。使用
data.table
按时间分组,并lubridate::round_date
将数据四舍五入至最接近的5分钟
library(data.table)
library(lubridate)
# Dummy data
nobv <- 1000 # number of observations
dat <- data.table(value = rnorm(nobv, mean = 56, sd = 6),
time = seq.POSIXt(from = Sys.time(), length.out = nobv, by = 60))
> dat[, .(meanval = mean(value)), by= .(round_date(time, unit = '5 min'))]
round_date meanval
1: 2018-08-13 10:55:00 55.32077
2: 2018-08-13 11:00:00 52.54964
3: 2018-08-13 11:05:00 58.38496
4: 2018-08-13 11:10:00 55.25373
5: 2018-08-13 11:15:00 57.09708
---
197: 2018-08-14 03:15:00 60.98019
198: 2018-08-14 03:20:00 54.77937
199: 2018-08-14 03:25:00 58.39377
200: 2018-08-14 03:30:00 55.19714
201: 2018-08-14 03:35:00 58.75665
库(data.table)
图书馆(lubridate)
#虚拟数据
nobv一个关于您当前数据和所需输出的示例将很有帮助。感谢Gautam,我添加了我的数据集的一部分。因此,我希望每5分钟将分钟分成一组。我看不出你在这里给同一组的人贴了标签。让我们想象一下,我的数据大小是199774,我有19行,我想在其中添加另一行作为类名。