我有针对每个参数排列成行的环境数据,我希望每个采样事件都有一行,以便对其进行分析。
它看起来像(实际上有大约20个参数类型和将近一百万行)
ID Location Parameter Result
a1 x1 DO 7.3
a1 x1 pH 8.1
a1 x1 Salinity 32.7
b2 x2 DO 7.6
b2 x2 pH 8.3
b2 x2 Salinity 31.2我希望它看起来像
ID Location DO pH Salinity
a1 x1 7.3 8.1 32.7
b2 x2 7.6 8.3 31.2然而,在不同深度的每次现场访问中也测量了某些参数。我正在考虑如何从概念上处理数据的这一方面,但显然,如果不能很好地将其可视化,就很难理解什么是重要的分析。有连续的深度测量(例如,0.112,0.527,1.244,5.891代表它被收集到的深度)和一个我可以排序的深度代码(例如。表面、半米、米、底)。我认为只要接受代码就可以了,特别是因为底部深度实际上是它自己的行作为参数,而这是唯一真正应该改变很多的行。
我认为我的选择是: 1)接受一些数据不会在同一行中,并且(我相信)不能在ArcGIS中一起分析,这是我的最终目标程序,一旦清理了大部分数据(不同的参数类型仅在特定深度测量)。如果我这样做,我可能只是将底部的代码添加到唯一的ID,它目前是一个文本字符串的网站和日期。或者2)以某种方式对新列进行编码,可能是深度代码与参数名称相结合。因此,对于location a1采样事件xxxx,我将有一行可能包含salinityS、salinityM、salinityB、pHS、pHM、pHB和DO的结果。希望我能清楚地理解这一点,但建议是非常受欢迎的。
此外,每个参数都有一个时间戳。它们都在一个可以忽略的窗口内,所以我可能只保留每个采样ID的第一个窗口,例如盐度为11:37,pH为11:38,输出行仅显示采样ID为11:37。
任何建议都将非常感谢,因为我已经在寻找一种有效的方法来分析这个庞大的数据集,而这种数据集的组织方式与我喜欢的格式相去甚远。
发布于 2018-01-17 09:21:04
使用来自tidyr的spread
library(tidyr)
spread(df, Parameter, Result)返回:
ID Location DO pH Salinity
1 a1 x1 7.3 8.1 32.7
2 b2 x2 7.6 8.3 31.2https://stackoverflow.com/questions/48291982
复制相似问题