我有大量数据文件,描述了大量气象站的天气。这些文件每小时一次,并且包含在按日期分隔的文件中。
例如:
20100101.csv
20100102.csv
20100103.csv
.
.
20140228.csv
Run Code Online (Sandbox Code Playgroud)
我需要按站点聚合数据,然后将其写入磁盘。也就是说,对于每个天气文件,我需要提取i站的数据,然后将其写入磁盘。
输出:
station_001.csv
station_002.csv
.
.
station_999.csv
Run Code Online (Sandbox Code Playgroud)
foreach为了加快速度,我决定使用和包并行读取日常文件doMC,并且在按站并行聚合后还将站文件写入磁盘。
更具体地说,我曾经foreach读取文件并使用它们组合它们.combine="rbind"(我有足够的内存来在内存中生成一个巨大的数据集)。之后,我有另一个foreach循环,我按站对数据进行子集化,然后写入磁盘。我发现通过并行读/写,我体验到了非常好的速度提升。
我的问题是:并行读/写是个好主意吗?我确保不同的线程不会读取相同的数据文件或写入相同的站文件,但经过一番谷歌搜索后,似乎并行化 i/o 任务可能不是一个好主意?(例如,我发现对并行输入/输出说不,并且R-bloggers 上的一篇文章显示了并行读取)
在阅读了关于R方法的基准测试和速度比较之后,我正在转换到data.table我的大型数据集上的数据操作的快速包.
我遇到一个特定的任务有问题:
对于某个观测变量,我想检查每个站是否存在绝对滞后差(滞后1)大于某个阈值.如果是,我想替换它NA,否则什么也不做.
我可以data.table使用该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)
Run Code Online (Sandbox Code Playgroud)
实施的麻烦在于我需要通过电台来完成这项工作,而且我不希望得到电台1的最后一次读数和电台2的第一次读数之间的滞后差异.
我试图在其中使用by=station运算符[ ],但我不知道该怎么做.
嘿,我想问一下如何使用R语言将多个文件从多个文件夹复制到单个文件夹
假设有三个文件夹:
在每个sub_task文件夹中,有多个文件。我想复制sub_task文件夹中的所有文件,然后将其粘贴到桌面上的新文件夹中(将该新文件夹命名为“ all_sub_task”)。谁能告诉我如何使用循环或套用功能在R中执行此操作?提前致谢。
我正在使用rasterVis软件包绘制栅格图,该软件包使用晶格生成图形。我正在为某些数据绘制级别图,该图会根据输入数据集的值自动选择颜色方案。
例如,假设我的数据采用(x,y,z)的形式,其中x是数据点的水平位置,y是垂直位置,z表示高程。如果使用数据创建水平图,则数据的颜色取决于z。默认情况下,点阵使用z的范围来选择绘图的配色方案。但是,为了使我的绘图与其他数据集可比,我想手动设置颜色的极限。
另一个示例:这是rasterVis网站上的图片:

默认情况下,最暗的红色是数据中最低的z值,最暗的蓝色是数据中最高的z值。有没有办法将颜色方案的限制手动设置为其他值,例如c(-3000,3000)?