【发布时间】:2019-03-09 17:13:51
【问题描述】:
我有一个包含超过 100 万列的数据框(我将栅格堆栈转换为数据框)。在这 100 万列中,只有数千列有数据。 数据框的前两行具有纬度和经度信息。我如何删除没有数据的列,但是每列都有数据作为纬度和经度信息。
示例:
> head(data[,c(1:8)])
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
x -961887.6 -960959.8 -960032.1 -959104.4 -958176.7 -957249 -956321.2 -955393.5
y 2816074.2 2816074.2 2816074.2 2816074.2 2816074.2 2816074 2816074.2 2816074.2
X2012273. NA NA NA NA NA NA NA NA
X2012281. NA NA NA NA NA NA NA NA
X2012289. NA NA NA NA NA NA NA NA
X2012297. NA NA NA NA NA NA NA NA
我的问题是如何排除前两行并一次删除所有没有数据的列。
我尝试了以下代码: 数据帧( data )中的行数为 22,包括纬度行和经度行。我应用了逻辑:
for (i in 1:ncol(data)) {
y = sum(is.na(data[,i]))
if(y == (length(data[,i]) - 2)) {
data[,-i]
}
}
这个for循环可能需要很长时间,最终不会成功执行。
【问题讨论】:
-
请提供样本数据
-
我用示例数据更新了问题
-
我不清楚。您要删除哪些行?您要删除哪些列?
-
我只想删除没有数据值 (NA) 的列。但问题是,如果他们没有数据,但在前两行中仍然有纬度/经度信息。