我有纯文本格式的网格数据
ASCII
格式(
please take a look original raw data on the fly
)所有数据观测均在每日水平上进行,年度数据收集在网格中。然而,我想重建这些数据,因为我想做年度统计。要做到这一点,我需要在矩阵中重建这些纯文本数据,就像在表格数据中一样,其中每日数据观察将在新的列中,这样做将更容易进行年度平均。
使现代化
:
因为原始纯文本数据((
请随时查看原始原始数据
))是相当大的,这里我只是把原始数据的概述放在这里。
更新2
:
我在中导入了原始原始普通数据
ASCII码
在R中,下面是R脚本:
rawdata = read.table(file = "~/25_krig_all_1980", header = FALSE, fill = TRUE, comment.char="Y", stringsAsFactors=FALSE )
colnames(rawdata) = c("long", "lat", "precip", "err1", "err2")
以下是原始纯文本数据的骨架(
please take a look on clipped raw data on the fly
)在中
notepad++
:
1980 1 1 1
6.125 47.375 0.0 20.00 1.0
6.375 47.375 0.0 19.99 1.0
6.625 47.375 0.0 19.97 1.0
6.875 47.375 0.0 19.84 1.0
7.125 47.375 0.0 20.00 1.0
1980 1 2 2
6.125 47.375 1.5 20.00 1.0
6.375 47.375 1.5 19.99 1.0
6.625 47.375 1.5 19.97 1.0
6.875 47.375 1.5 19.84 1.0
7.125 47.375 2.9 20.00 1.0
1980 1 3 3
6.125 47.375 3.3 20.00 1.0
6.375 47.375 3.3 19.99 1.0
6.625 47.375 3.3 19.97 1.0
6.875 47.375 3.3 19.84 1.0
7.125 47.375 1.3 20.00 1.0
1980 1 4 4
6.125 47.375 3.8 20.00 1.0
6.375 47.375 3.8 19.99 1.0
6.625 47.375 3.8 19.97 1.0
6.875 47.375 3.7 19.84 1.0
7.125 47.375 3.7 20.00 1.0
1980 1 5 5
6.125 47.375 2.2 20.00 1.0
6.375 47.375 2.2 19.99 1.0
6.625 47.375 2.2 19.97 1.0
6.875 47.375 2.2 19.84 1.0
7.125 47.375 4.8 20.00 1.0
下面是我解释原始原始纯文本数据的最小示例:
foo = read.table("grid_data_demo.txt", header=FALSE, skip=1, nrows = 5)
colnames(foo) = c("long", "lat", "precip", "err1", "err2")
更新3
:
在原始纯文本数据中,没有文本分隔符,也没有将所有数据放置在纯文本中的列表。我创建了
miniDat
作为一个可复制的示例,因为我想从原始原始数据中获得类似列表的对象((
please take a look example data snipt on the fly
)()
miniDat = list(dat_19800101 = data.frame(long=c( 6.125 ,6.375, 6.625, 6.875, 7.125),
lat=c(47.375, 47.375, 47.375, 47.375, 47.375),
precip=c(0, 0, 0, 0, 0),
err1=c(20.00, 19.99, 19.97, 19.84, 20.00),
err2=c(1, 1, 1, 1, 1)),
dat_19800102 = data.frame(long=c( 6.125 ,6.375, 6.625, 6.875, 7.125),
lat=c(47.375, 47.375, 47.375, 47.375, 47.375),
precip=c(1.5, 1.5, 1.5, 1.5, 2.9),
err1=c(20.00, 19.99, 19.97, 19.84, 20.00),
err2=c(1, 1, 1, 1, 1)),
dat_19800103 = data.frame(long=c( 6.125 ,6.375, 6.625, 6.875, 7.125),
lat=c(47.375, 47.375, 47.375, 47.375, 47.375),
precip=c(3.3, 3.3, 3.3, 3.3, 1.3),
err1=c(20.00, 19.99, 19.97, 19.84, 20.00),
err2=c(1, 1, 1, 1, 1)),
dat_19800104 = data.frame(long=c( 6.125 ,6.375, 6.625, 6.875, 7.125),
lat=c(47.375, 47.375, 47.375, 47.375, 47.375),
precip=c(3.8, 3.8, 3.8, 3.7, 3.7),
err1=c(20.00, 19.99, 19.97, 19.84, 20.00),
err2=c(1, 1, 1, 1, 1)),
dat_19800105 = data.frame(long=c( 6.125 ,6.375, 6.625, 6.875, 7.125),
lat=c(47.375, 47.375, 47.375, 47.375, 47.375),
precip=c(2.2, 2.2, 2.2, 2.2, 4.8),
err1=c(20.00, 19.99, 19.97, 19.84, 20.00),
err2=c(1, 1, 1, 1, 1)))
因此,我想从原始纯文本数据中重建类似于表格数据的矩阵,并分别对每个网格点进行年度统计。可能
dplyr
或
data.table
提供用于处理此类操作的实用程序。是否有任何快速的解决方案来进行此数据转换?我怎样才能在
dplyr
公用事业有什么想法吗?
所需输出
:
在我的预期输出中,我想删除
fourth (err1)
和
fifth (err2)
列,同时保持相同的维度
long
和
lat
带有respetive daily的列
precip
值作为新列。以下是我预期输出的可复制示例:
desired_output = data.frame(
long=c( 6.125 ,6.375, 6.625, 6.875, 7.125),
lat=c(47.375, 47.375, 47.375, 47.375, 47.375),
precip_day1=c(0, 0, 0, 0, 0),
precip_day2=c(1.5, 1.5, 1.5, 1.5, 2.9),
precip_day3=c(3.3, 3.3, 3.3, 3.3, 1.3),
precip_day4=c(3.8, 3.8, 3.8, 3.7, 3.7),
precip_day5=c(2.2, 2.2, 2.2, 2.2, 4.8)
)
基本上,我想简化原始数据,并将其重建为类似于表格数据的矩阵,以便于计算年平均值
precip公司
对于每个栅格坐标。为了简化和提高效率,在我预期的最终输出中,我希望
长的
,则,
拉丁美洲
和
annual_mn_precip
各列。
如何在R中进行数据简化和转换?有更简单的方法吗?谢谢