我有一个带有数字纬度和经度值的数据框。 data.frame具有14K行和40列。
我想在数据框中添加一个名为“半球”的类别列,以便轻松地区分北部(纬度> 0)和南部位置(纬度
for (r in 1:nrow(myDataFrame)) {
if (myDataFrame[r, "latitude"] > 0) {
myDataFrame[r, "hemisphere"] <- "North"
} else {
myDataFrame[r, "hemisphere"] <- "South"
}
}
在我的MacBook Pro上运行此代码块大约需要一分钟,甚至两分钟,比我预期的要长得多。似乎有些东西使它效率很低,应该有更好的方法。有什么提示吗?
最佳答案
@baptiste的ifelse
解决方案是加快与矢量化比较的一般习惯用法,但是在这种情况下,一些明智的子集和sign
的使用可能会更快:
myDataFrame$hemisphere <- c("South","Equator","North")[sign(myDataFrame$latitude)+2]