我正在尝试转换数据框,以使列是唯一的经度值,行是唯一的经度值,其值是r中的距离。
我的原始数据框与此类似:
df <- data.frame( lat =c(0,0,0,25,25,25,30,30,30), lon =c(1,5,10,1,5,10,1,5,10), distance = c(20, 22, 25, 10, 12, 15, 5, 7, 9))
df
但是我想将其转换成这样的形式(尽管列名不是必需的)
final_df <- data.frame(lat0 = c(20,22,25), lat25 = c(10,12,15), lat30= c(5,7,9))
final_df
用途tapply
:
t(tapply(df$distance, list(df$lat, df$lon), sum))
0 25 30
1 20 10 5
5 22 12 7
10 25 15 9
如果需要列名:
t <- as.data.frame(t(tapply(df$distance, list(df$lat, df$lon), sum)))
colnames(t) <- paste("lat", names(t), sep = "")
t
lat0 lat25 lat30
1 20 10 5
5 22 12 7
10 25 15 9
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句