我有以下数据框:
IID sex longitude latitude longitude.1 latitude.1 longitude.2 latitude.2
1234587 0 351500 383500 NA NA NA NA
5145633 1 431340 265505 NA NA NA NA
1305430 1 449500 244900 262500 265500 NA NA
5012044 0 445600 514300 NA NA NA NA
1234059 1 NA NA 514300 514300 445500 445520
3087662 0 444500 425200 NA NA NA NA
....
....etc
我希望将longitude的值替换为longitude.1的值,只要longitude.1不缺失,并且对纬度和纬度执行相同的操作。我认为这应该很简单并尝试以下方法:
MyData$longitude[!is.na(MyData$longitude.1)] <- MyData$longitude.1
MyData$latitude[!is.na(MyData$latitude.1)] <- MyData$latitude.1
但是,我收到以下错误:
Warning message:
In MyData$longitude[!is.na(MyData$longitude.1)] <- MyData$longitude.1 :
number of items to replace is not a multiple of replacement length
我做错了什么?
结果应该是这样的:
IID sex longitude latitude longitude.1 latitude.1 longitude.2 latitude.2
1234587 0 351500 383500 NA NA NA NA
5145633 1 431340 265505 NA NA NA NA
1305430 1 262500 265500 262500 265500 NA NA
5012044 0 445600 514300 NA NA NA NA
1234059 1 514300 514300 514300 514300 445500 445520
3087662 0 444500 425200 NA NA NA NA
....
....etc
答案 0 :(得分:1)
MyData$longitude[!is.na(MyData$longitude.1)]
产生2 NA,而MyData$longitude.1
是所有6个值。所以分配失败了。获取非NA的longitude.1
:
MyData$longitude[!is.na(MyData$longitude.1)] <- MyData$longitude.1[!is.na(MyData$longitude.1)]
MyData$latitude[!is.na(MyData$latitude.1)] <- MyData$latitude.1[!is.na(MyData$latitude.1)]