拆分样品并对其进行操作

时间:2018-04-27 15:08:30

标签: r

我刚开始使用R而且我有一个初学者的问题。

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

Time: 00:01:00 00:02:00 00:03:00 00:04:00   ....

Flow: 2          4         5      1         .... 

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

我想在列表中保存这些新方法。如何使用apply函数执行此操作?

2 个答案:

答案 0 :(得分:0)

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

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

dt = data.table(Time = c(0:3), Flow = c(2,4,5,1))

然后以下内容适合您:

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

答案 1 :(得分:0)

我假设你有无间隙的连续数据,每分钟都有Flow的值。

在基数R中,我们可以使用aggregate

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中提取奇数行;每{2}行汇总Flow列中的值,并将均值存储在mean_2min列中。

样本数据

df <- data.frame(
    Time = c("00:01:00", "00:02:00", "00:03:00", "00:04:00"),
    Flow = c(2, 4, 5, 1))