r - 从数据框中删除特定列缺少数据的行
问题描述
我正在尝试使用数据框和 sf 库从事件列表中获取一些坐标并将其转换为要映射的 shapefile。有些行缺少纬度/经度,当我使用 st_as_sf 函数时,由于缺少坐标而失败。数据来自 csv 中的外部源,尽管我尝试修剪缺少信息的行(转到 sql 并返回 csv),但文档的格式似乎不一致,因此它移动了一些行,我也遇到了同样的问题。无论如何,r 中是否有修剪缺少特定列(纬度、经度)的数据框,或者在创建数据框以省略这些列时?我想我可能可以循环并根据需要进行检查,但想知道是否有更好的方法?谢谢!
解决方案
假设您有一个数据框,并且坐标存储在名为“lat”和“lng”的列中。
df <- data.frame(lat = c(NA, 2, 2), lng = c(NA, 1, NA))
过滤掉任何缺失的坐标:
df <- df[which(!is.na(df$lat) & !is.na(df$lng)),]
转换为 sf:
sf.df <- st_as_sf(df, coords = c('lat', 'lng'))
您还应该使用 st_as_sf() 中的 crs 参数设置数据的投影
推荐阅读
- c++ - 为什么初始化具有已定义 ctor 类型的值的对象不会调用复制构造函数?
- javascript - ajax请求的角度成功方法中的编译错误
- mongodb - 不能减去两个双打mongodb聚合
- javascript - Ignore javascript error in HTML file (VS Code)
- android - 如何在 Android / Kotlin 中使用 OnChange 扩展在 Fragment 中隐藏键盘
- java - 如何将对象存储到 ArrayList 中而不用在 Java 中复制?
- image - 如何在 prolog 中打开图像并在终端中显示?
- google-cloud-platform - Google Cloud Compute Python API 不接受我的启动脚本
- algorithm - 按字典的键和值对字典数组进行排序
- java - 如何在 Selenium Java 中使用键盘键复制段落