簡體   English   中英

如何在R中的數據幀中的新列中添加新值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM