我是使用 R 进行数据分析的新手。我最近获得了一个预先格式化的环境观测模型数据集,其示例子集如下所示:
date site obs mod site obs mod
2000-09-01 00:00:00 campus NA 61.63 city centre 66 56.69
2000-09-01 01:00:00 campus 52 62.55 city centre NA 54.75
2000-09-01 02:00:00 campus 52 63.52 city centre 56 54.65
基本上,这些数据包括“重复出现的列”中各个站点的每小时观测和模拟污染物浓度的时间序列,即站点 - obs - mod(在示例中,我只显示了总共 75 个站点中的 2 个)。我将这个“宽”数据集作为数据框读取,并希望将其重塑为“窄”格式:
date site obs mod
2000-09-01 00:00:00 campus NA 61.63
2000-09-01 01:00:00 campus 52 62.55
2000-09-01 02:00:00 campus 52 63.52
2000-09-01 00:00:00 city centre 66 56.69
2000-09-01 01:00:00 city centre NA 54.75
2000-09-01 02:00:00 city centre 56 54.65
我相信我应该使用包“reshape2”来做到这一点。首先,我尝试融化然后 dcast 数据集:
test.melt <- melt(test.data, id.vars = "date", measure.vars = c("site", "obs", "mod"))
但是,它只返回了一半的数据,即第一个(“校园”)之后的站点(“市中心”)的记录都被切断了:
date variable value
2001-01-01 00:00:00 site campus
2001-01-01 01:00:00 site campus
2001-01-01 02:00:00 site campus
2001-01-01 00:00:00 obs NA
2001-01-01 01:00:00 obs 52
2001-01-01 02:00:00 obs 52
2001-01-01 00:00:00 mod 61.63
2001-01-01 01:00:00 mod 62.55
2001-01-01 02:00:00 mod 63.52
然后我尝试重铸:
test.recast <- recast(test.data, date ~ site + obs + mod)
但是,它返回错误消息:
Error in eval(expr, envir, enclos) : object 'site' not found
我试图搜索以前的问题,但没有找到类似的场景(如果我错了,请纠正我)。有人可以帮我吗?
提前谢谢了!