计算数据框中值的平均值和总和
Calculating mean AND sum for values in a dataframe
DATETIME MAX.TEMP MIN.TEMP NEW.PRCP NEW.SNOW
18791 1999/03/20 06:00 0.4 -2.0 0 0.0
18911 1999/03/20 18:00 11.7 -1.5 0 0.0
19031 1999/03/21 06:00 6.9 2.0 -1 0.1
19151 1999/03/21 18:00 12.3 2.4 -1 0.0
19271 1999/03/22 06:00 2.6 -1.1 1 0.0
19391 1999/03/22 18:00 5.4 -2.3 0 0.0
19511 1999/03/23 06:00 1.1 -3.9 1 0.1
19631 1999/03/23 18:00 7.1 -3.1 0 0.1
19751 1999/03/24 06:00 1.6 -2.6 0 0.1
19871 1999/03/24 18:00 7.5 -0.8 1 0.1
我想获取列的每日平均值:MAX.TEMP、MIN.TEMP
我还想获得列的每日总和:NEW.PRCP、NEW.SNOW
我一直在尝试使用 data.table 类似于之前的问题
我开始尝试模仿所提供的评论,然后开始尝试获取 MAX.TEMP:
的平均值
setDT(new_Tbl)[, .(DATETIME = DATETIME[1L], MAX.TEMP = mean(MAX.TEMP)),
by = .(indx = substr(DATETIME,12,13) == '06'))]
其中 returns 意外错误 ] 和 ) 并且找不到函数。"
我假设语法中有我不遵循的捷径。感谢您的帮助和耐心等待。
library(data.table)
setDT(df)[, `:=`(MAX.TEMP = mean(MAX.TEMP), MIN.TEMP = mean(MIN.TEMP),
NEW.PRCP = sum(NEW.PRCP), NEW.SNOW = sum(NEW.SNOW)), as.IDate(DATETIME)]
#
# DATETIME MAX.TEMP MIN.TEMP NEW.PRCP NEW.SNOW
# 1: 1999/03/20 06:00 6.05 -1.75 0 0.0
# 2: 1999/03/20 18:00 6.05 -1.75 0 0.0
# 3: 1999/03/21 06:00 9.60 2.20 -2 0.1
# 4: 1999/03/21 18:00 9.60 2.20 -2 0.1
# 5: 1999/03/22 06:00 4.00 -1.70 1 0.0
# 6: 1999/03/22 18:00 4.00 -1.70 1 0.0
# 7: 1999/03/23 06:00 4.10 -3.50 1 0.2
# 8: 1999/03/23 18:00 4.10 -3.50 1 0.2
# 9: 1999/03/24 06:00 4.55 -1.70 1 0.2
# 10: 1999/03/24 18:00 4.55 -1.70 1 0.2
每一列都是在 `:=`(...)
运算符中创建的。此外,它全部按天分组,而无需显式创建新列 as.IDate(DATETIME)
。
DATETIME MAX.TEMP MIN.TEMP NEW.PRCP NEW.SNOW
18791 1999/03/20 06:00 0.4 -2.0 0 0.0
18911 1999/03/20 18:00 11.7 -1.5 0 0.0
19031 1999/03/21 06:00 6.9 2.0 -1 0.1
19151 1999/03/21 18:00 12.3 2.4 -1 0.0
19271 1999/03/22 06:00 2.6 -1.1 1 0.0
19391 1999/03/22 18:00 5.4 -2.3 0 0.0
19511 1999/03/23 06:00 1.1 -3.9 1 0.1
19631 1999/03/23 18:00 7.1 -3.1 0 0.1
19751 1999/03/24 06:00 1.6 -2.6 0 0.1
19871 1999/03/24 18:00 7.5 -0.8 1 0.1
我想获取列的每日平均值:MAX.TEMP、MIN.TEMP 我还想获得列的每日总和:NEW.PRCP、NEW.SNOW
我一直在尝试使用 data.table 类似于之前的问题
我开始尝试模仿所提供的评论,然后开始尝试获取 MAX.TEMP:
的平均值setDT(new_Tbl)[, .(DATETIME = DATETIME[1L], MAX.TEMP = mean(MAX.TEMP)),
by = .(indx = substr(DATETIME,12,13) == '06'))]
其中 returns 意外错误 ] 和 ) 并且找不到函数。"
我假设语法中有我不遵循的捷径。感谢您的帮助和耐心等待。
library(data.table)
setDT(df)[, `:=`(MAX.TEMP = mean(MAX.TEMP), MIN.TEMP = mean(MIN.TEMP),
NEW.PRCP = sum(NEW.PRCP), NEW.SNOW = sum(NEW.SNOW)), as.IDate(DATETIME)]
#
# DATETIME MAX.TEMP MIN.TEMP NEW.PRCP NEW.SNOW
# 1: 1999/03/20 06:00 6.05 -1.75 0 0.0
# 2: 1999/03/20 18:00 6.05 -1.75 0 0.0
# 3: 1999/03/21 06:00 9.60 2.20 -2 0.1
# 4: 1999/03/21 18:00 9.60 2.20 -2 0.1
# 5: 1999/03/22 06:00 4.00 -1.70 1 0.0
# 6: 1999/03/22 18:00 4.00 -1.70 1 0.0
# 7: 1999/03/23 06:00 4.10 -3.50 1 0.2
# 8: 1999/03/23 18:00 4.10 -3.50 1 0.2
# 9: 1999/03/24 06:00 4.55 -1.70 1 0.2
# 10: 1999/03/24 18:00 4.55 -1.70 1 0.2
每一列都是在 `:=`(...)
运算符中创建的。此外,它全部按天分组,而无需显式创建新列 as.IDate(DATETIME)
。