[英]Remove rows from dataframe if they contain a certain value (R ,dplyr)
[英]Remove rows contains certain value from spatial dataframe - solved
我想从空间data.frame
删除具有某些值的行,因为标准 R grep()
似乎没有通过sp
类对象的所有插槽传播。
bd@data[- grep("xcluded", bd@data$Notes),]
它给了我一个错误:
错误:试图从不是 S4 对象的对象(类“data.frame”)中获取插槽“数据”
我读到sp.na.omit
可以删除NA
但不知道如何删除具有特定值的行(例如,删除 bd@data$Notes 中具有“排除”的行)。 有什么建议?
抱歉,我无法通过 R 创建 shapefile 示例,但我会尝试提供有关我的 sp 数据框的更多信息:
> class(bd)
1 “空间线数据帧”
attr(,"包")
1个“sp”
类:SpatialLinesDataFrame
特点:8855
范围:172.6811、174.5966、-36.36374、-34.42634(xmin、xmax、ymin、ymax)
crs : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
变量:134
名称:OBJECTID_1、Name_in_us、Unique_ID、RAMM_Road_、iSequence、SH、OBJECTID、ROADID、RoadLength、RoadNameAn、Displaceme、road_id、AvgWidth、pave、CJNEX_urba、...
最小值 : 1, 014-0000, 1188496, 0, 0, No, 0, 0, 0, 012-0132 (805), 0-1008m, 0, 0, Concrete, Rural, ...
最大值 : 5299, ZEALANDIA ST, 2044000001, 2065, 480, Yes, 999, 1683, 45826.7818765, ZIDICH ROAD, 9925-9966m, 3520, ... 18, Urban, 2。
df(bd@lines) 内的折线
$行[[1000]]
“线”类的对象
插槽“线”:
[ 1 ]
“线”类的对象
插槽“坐标”:
[,1] [,2]
[1,] 174.3629 -35.77290
[2] 174.3627 -35.77281
[3] 174.3624 -35.77276
bd@data[1000,]
OBJECTID_1 Name_in_us Unique_ID RAMM_Road_ iSequence SH OBJECTID ROADID RoadLength RoadNameAn Displaceme road_id AvgWidth ...
1000 1000 DOMAIN RD 1.16e+08 116 2 No 89 116 94.75686 DOMAIN RD (116) 0-95m ...
解决方案: 1. 作为下面的答案/评论 2. 使用bd[- grep("xcluded", bd$Notes),]
代替
我现在不相信bd
是一个空间对象,或者这个:
bd@data[- grep("xcluded", bd@data$Notes),]
不是产生此错误的行:
Error: trying to get slot "data" from an object (class "data.frame") that is not an S4 object
该错误表示它正在尝试从数据帧中获取数据槽。 它与grep
或子集无关。
我可以复制该错误消息:
> d = data.frame(x=1:10)
> d@data
Error: trying to get slot "data" from an object (class "data.frame") that is not an S4 object
>
但我不能用空间 sp-class 对象复制它:
> Sldf
class : SpatialLinesDataFrame
features : 2
extent : 1, 3.05, 1, 3.05 (xmin, xmax, ymin, ymax)
crs : NA
variables : 1
names : Z
min values : AA
max values : AB
> Sldf@data
Z
1 AA
2 AB
> Sldf@data[-grep("B",Sldf@data$Z),,drop=FALSE]
Z
1 AA
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.