![](/img/trans.png)
[英]R - Add a new column to a dataframe using matching values of another dataframe
[英]How to add new values to a new column in a dataframe in R?
我需要對存儲在數據框中的數據進行一些計算。 然后將結果放入此數據框的新列中。
初始數據幀:
> str(mydf)
'data.frame': 1122 obs. of 6 variables:
$ MMSI : num 2.73e+08 2.73e+08 2.73e+08 2.73e+08 2.73e+08 ...
$ MMSI.1 : num 2.73e+08 2.72e+08 2.72e+08 2.72e+08 6.67e+08 ...
$ LATITUDE : num 46.9 46.9 46.9 46.9 46.9 ...
$ LONGITUDE : num 32 32 32 32 32 ...
$ LATITUDE.1 : num 46.9 46.9 46.9 46.9 46.9 ...
$ LONGITUDE.1: num 32 32 32 32 32 ...
現在,我需要添加一個新列,其中包含操作結果以及當前原始數據。
運行下一個代碼:
library(geosphere)
> mydf$distance <- with(mydf, distGeo(c(mydf$LONGITUDE,mydf$LATITUDE),c(mydf$LONGITUDE,mydf$LATITUDE)))
Error in .pointsToMatrix(p1) : Wrong length for a vector, should be 2
我知道這是函數distGeo的數據結構應該不同。 如何解決此錯誤或如何更改代碼以獲取新列中點之間的距離?
無需查看數據,您似乎正在嘗試計算單個點之間的距離。 第二點應該在列名的末尾包含.1
library(geosphere)
mydf$distance <- with(mydf, distGeo(c(LONGITUDE, LATITUDE), c(LONGITUDE.1, LATITUDE.1)))
更新
看起來錯誤是因為您正在傳遞整個數據幀,而不是單獨傳遞每一行。 嘗試這個
apply(mydf, 1, function(x) distGeo(x[c("LONGITUDE","LATITUDE")],x[c("LONGITUDE.1","LATITUDE.1")]))
或者只是傳遞特定的數據列使其在接受矩陣時起作用
distGeo(mydf[,c("LONGITUDE", "LATITUDE")], mydf[,c("LONGITUDE.1", "LATITUDE.1")])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.