考虑以下数据框:
set.seed(42)
ID <- c(1:6)
OB <- c(rep("A",4),rep("B",2))
lat_start <- rnorm(6,42,2)
lon_start <- rnorm(6,12,2)
lat_stopp <- rnorm(6,42,2)
lon_stopp <- rnorm(6,12,2)
df <- data.frame(ID,OB,lat_start,lon_start,lat_stopp,lon_stopp)
我想重新格式化df
为长格式,每个格式ID
都有一行用于开始和停止坐标。一个简单的gather()
解决方案,例如df_wrong <- gather(df,coords,val,lat_start:lon_stopp)
显然不会工作,因为我需要 lat/lon 列保持分组。我希望长数据框看起来像这样:
ID OB SS lat lon
1 1 A start 44.74192 15.023040
2 1 A stop 39.22228 7.119066
3 2 A start 40.87060 11.810680
4 2 A stop 41.44242 14.640227
5 3 A start 42.72626 16.036850
6 3 A stop 41.73336 11.386723
7 4 A start 43.26573 11.874570
8 4 A stop 43.27190 8.437383
9 5 B start 42.80854 14.609740
10 5 B stop 41.43149 11.656165
11 6 B start 41.78775 16.573290
12 6 B stop 36.68709 14.429349
SS
当然可以稍后添加该列。任何建议将不胜感激!