我想在R中使用宽幅格式的重塑功能来分析三年来从车站注意到的天气数据:1996年,2006年和2016年。
我已经手动组合了长格式的三个数据集,但是一些变量(例如经度和纬度)不应该从一年到另一年变化。但有些是不同的。
我收到警告:当我应用reshape时,一些常量变量(Nom,Lat,Long)实际上是变化的,这是预期的。
在这种情况下,目标是让这些变量以最终格式包含2016年观察到的值。
注意:三年内气象站并非都存在。
here is an example:
>a=c(rep(2,4),rep(4,3))
>b=c(rep(2,3),5,rep(4,3),4,5,3)
>c=c(1,2,3,4,5,6,7,1,2,3,4,5,6,7,8,9,10)
>name=c('a','b','c','d','e','f','g','a','b',
'c','d','r','t','y','u','q','z')
>year=c(rep(2002,7),rep(2005,10))
>df=cbind(id=c,pos=c(a,b),year,name)
>df=as.data.frame(df)
df如下:
> df
id pos year name
1 1 2 2002 a
2 2 2 2002 b
3 3 2 2002 c
4 4 2 2002 d
5 5 4 2002 e
6 6 4 2002 f
7 7 4 2002 g
8 1 2 2005 a
9 2 2 2005 b
10 3 2 2005 c
11 4 5 2005 d
12 5 4 2005 r
13 6 4 2005 t
14 7 4 2005 y
15 8 4 2005 u
16 9 5 2005 q
17 10 3 2005 z
现在使用reshape转到宽格式:
>dfw<-reshape(df,direction="wide",timevar="year",
idvar="id",v.names="pos")
警告讯息: 在reshapeWide中(data,idvar = idvar,timevar = timevar,vary = varying,: 一些常量变量(名称)实际上是变化的
> dfw
id name pos.2002 pos.2005
1 1 a 2 2
2 2 b 2 2
3 3 c 2 2
4 4 d 2 5
5 5 e 4 4
6 6 f 4 4
7 7 g 4 4
15 8 u <NA> 4
16 9 q <NA> 5
17 10 z <NA> 3
我得到了我需要的东西:随着时间的推移而变化。
我的问题是:在2002年,身份5,6和7的观察具有相应的名称e,f和g。然而在2005年,它们分别具有名称r,t和y。宽格式表dfw显示2002年给出的名称
我希望重塑函数中的结果显示2005年为此类观察定义的名称。
重塑功能中有什么要修改的吗?也许在另一个包里?
请注意,这些是两个独立的表,最初每年一个,并且是手动组合的,所以也许在组合之前可以进行修改?
答案 0 :(得分:0)
将两个数据框合并为不同年份时,应将2005年表放在开头。这样,R采用了为2005年定义的第一个配置。