我刚开始使用R而且我有一个初学者的问题。
我有以下数据框(简化):
Time: 00:01:00 00:02:00 00:03:00 00:04:00 ....
Flow: 2 4 5 1 ....
我想知道每两分钟而不是每分钟的平均流量。我需要这个数小时的数据。
我想在列表中保存这些新方法。如何使用apply函数执行此操作?
答案 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))