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