繁体   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