R 在样本中拆分并对其进行操作

R 在样本中拆分并对其进行操作,r,R,我刚从R开始,我有一个初学者的问题 我有以下数据框(简化): 我想知道每两分钟的平均流量,而不是每分钟。我需要这几个小时的数据 我想把这些新方法保存在一个列表中。如何使用应用函数实现这一点?您可以通过将时间变量四舍五入到下面最接近的两分钟,在数据中创建一个新变量,然后使用数据表函数计算新分钟的平均值 为了准确地帮助您,您必须指出数据是如何设置的。例如,如果您的数据设置如下: dt = data.table(Time = c(0:3), Flow = c(2,4,5,1)) 那么,以下几点对您适

我刚从R开始,我有一个初学者的问题

我有以下数据框(简化):

我想知道每两分钟的平均流量,而不是每分钟。我需要这几个小时的数据


我想把这些新方法保存在一个列表中。如何使用应用函数实现这一点?

您可以通过将时间变量四舍五入到下面最接近的两分钟,在数据中创建一个新变量,然后使用数据表函数计算新分钟的平均值

为了准确地帮助您,您必须指出数据是如何设置的。例如,如果您的数据设置如下:

dt = data.table(Time = c(0:3), Flow = c(2,4,5,1))
那么,以下几点对您适用:

dt[, twomin := floor(Time/2)*2]
dt[, mean(Flow), by = twomin]

我假设您有连续的数据,没有间隙,每分钟都有
Flow
的值

在基本R中,我们可以使用聚合:

df.out <- data.frame(Time = df[seq(0, nrow(df) - 1, 2) + 1, "Time"]);
df.out$mean_2min = aggregate(
    df$Flow,
    by = list(rep(seq(1, nrow(df) / 2), each = 2)),
    FUN = mean)[, 2];
df.out;
#      Time mean_2min
#1 00:01:00         3
#2 00:03:00         3

请提供足够大的数据样本,以便我们使用。有关如何制作一个人们可以重新创建的R问题,请参见。另外,请发布您迄今为止尝试过的内容。如果您的数据始终以1分钟为间隔,则您可以尝试使用软件包
zoo
中的功能
rollapply
。参见示例:
z非常感谢您的回答!我有一个后续问题。如果数据总数不是偶数(在本例中为4),而是奇数,我该怎么办?然后总抱怨。。。我想要的是最后一个数字。这个答案我非常感谢!我有一个后续问题。如果数据总数不是偶数(在本例中为4行),而是奇数(如5行),我该怎么办?然后,由于争论的长度不同,聚合投诉。我对不是来自2分钟间隔的平均值不感兴趣,所以我不关心第5行。我该怎么说呢?非常感谢@momo如果它始终是最后一行,并且您想要丢弃它,只需使用例如
df[-nrow(df),]
删除该行即可。如果您的数据在1分钟内不连续,这将成为另一个问题。谢谢您的回答。我的数据是以1分钟为单位连续的,但实际上我想每15分钟知道一次平均值(不是我为了简化而写的每2分钟一次)。因此,有时我会有多达14行,我可能想放弃。我需要说,我想在最大行数上运行,这样nrow/15就是一个整数。对不起,如果我不清楚。非常感谢,现在已经解决了。我刚刚检查了(nrow(df)/2)%%1=虽然这是真的,但我做到了
df.out <- data.frame(Time = df[seq(0, nrow(df) - 1, 2) + 1, "Time"]);
df.out$mean_2min = aggregate(
    df$Flow,
    by = list(rep(seq(1, nrow(df) / 2), each = 2)),
    FUN = mean)[, 2];
df.out;
#      Time mean_2min
#1 00:01:00         3
#2 00:03:00         3
df <- data.frame(
    Time = c("00:01:00", "00:02:00", "00:03:00", "00:04:00"),
    Flow = c(2, 4, 5, 1))