阅读了与R方法的基准测试和速度比较相关的内容后,我正在转向使用快速的data.table软件包来操作大型数据集。
我在完成一个特定任务时遇到了麻烦:
对于某个观测变量,我想要检查每个站点是否存在绝对滞后差(滞后1)大于一定阈值。如果是,则将其替换为NA,否则不做任何操作。
我可以使用set命令来处理整个数据表,但我需要按站点分开处理。
例如:
我的问题在于,我需要按站点对数据进行处理,但是我不想获得站点1最后一次读数和站点2第一次读数之间的滞后差异。
我尝试在方括号内使用“by = station”运算符,但我不确定如何操作。
我在完成一个特定任务时遇到了麻烦:
对于某个观测变量,我想要检查每个站点是否存在绝对滞后差(滞后1)大于一定阈值。如果是,则将其替换为NA,否则不做任何操作。
我可以使用set命令来处理整个数据表,但我需要按站点分开处理。
例如:
# Example data. Assume the columns are ordered by date.
set.seed(1)
DT <- data.table(station=sample.int(n=3, size=1e6, replace=TRUE),
wind=rgamma(n=1e6, shape=1.5, rate=1/10),
other=rnorm(n=1.6),
key="station")
# My attempt
max_rate <- 35
set(DT, i=which(c(NA, abs(diff(DT[['wind']]))) > max_rate),
j=which(names(DT)=='wind'), value=NA)
# The results
summary(DT)
我的问题在于,我需要按站点对数据进行处理,但是我不想获得站点1最后一次读数和站点2第一次读数之间的滞后差异。
我尝试在方括号内使用“by = station”运算符,但我不确定如何操作。
data.table
包,但是从plyr
转换过来确实有一定的学习曲线。您知道在哪里可以找到data.table
特殊变量(例如.I
、.SD
、NA_real_
等)的文档吗? - ialm?data.table
中找到。请确保仔细阅读example(data.table)
(也在?data.table
中),并逐个运行示例以理解其含义。 - Arun