如何将新值添加到R中的数据框中的新列?

时间:2016-12-21 15:00:30

标签: r dataframe

我需要对存储在数据帧中的数据进行一些计算。并将结果放入此数据框的新列中。

初始数据框:

<link rel="stylesheet" 
      href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
      asp-fallback-href="css/bootswatchSlate.css"
      asp-fallback-test-class="hidden"
      asp-fallback-test-property="display"
      asp-fallback-test-value="none" />

现在我需要添加一个新列,其中包含当前raw ...的数据的操作结果。

运行下一个代码:

    > 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 ...

我知道函数distGeo的数据结构应该是不同的。 如何修复此错误或如何更改代码以获取新列中的点之间的距离?

1 个答案:

答案 0 :(得分:1)

如果没有要查看的数据,看起来您正在尝试计算单个点之间的距离。第二点可能包括列名

末尾的.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")])