如何基于R

时间:2016-07-08 12:57:25

标签: r vector filter character subset

我试图通过我创建的字符向量对空间线数据框进行子集化 我的数据如下:

> head(All_travs)
  FEATURE_ID  TRAV_No PROJECT_ID SHAPE_LENG SHAPE_LEN
0       7586 TR_220_N          1 0.17261653         0
1       7593 TR_215_N          1 0.10003741         0
2       7594 TR_210_N          1 0.06658912         0
3       7585 TR_220_S          1 0.12964761         0
4      45038     TR_8          1 0.13393442         0
5      45001    TR_14          1 0.20971781         0

如下所示,All_travs有72个以

开头的功能
    > All_travs
class       : SpatialLinesDataFrame 
features    : 72 
extent      : 154037.7, 352737.3, -480490.4, -332383.8  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=22 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
variables   : 5
names       : FEATURE_ID, TRAV_No, PROJECT_ID, SHAPE_LENG, SHAPE_LEN 
min values  :       7585,   TR_10,          1, 0.02586690,         0 
max values  :      58694, TR_95_S,          1, 0.73055204,         0 

我发现的最接近的答案就在这里 Filtering a data frame on a vector 但由于某些原因,它对我不起作用:

当我尝试通过其元素与列Trav_No中的某些元素匹配的向量对数据帧进行子集化时:

sel<-c("TR_19", "TR_75_N", "TR_85_N", "TR_95_N")
Trav_sel<-subset(All_travs, All_travs$TRAV_No %in% sel)

它保留了0个功能......

> Trav_sel
class       : SpatialLinesDataFrame 
features    : 0 
coord. ref. : +proj=utm +zone=22 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
variables   : 5
names       : FEATURE_ID, TRAV_No, PROJECT_ID, SHAPE_LENG, SHAPE_LEN 
>

...但显然是Trav_sel $ TRAV_No

中的所有值
> All_travs$TRAV_No
[1] TR_220_N TR_210_N TR_95_S  TR_20    TR_125  
69 Levels: TR_10 TR_100_N TR_100_S TR_105_N TR_105_S TR_11 TR_110_N TR_110_S TR_115_N TR_115_S ... TR_95_S
> Trav_sel$TRAV_No
factor(0)
69 Levels: TR_10 TR_100_N TR_100_S TR_105_N TR_105_S TR_11 TR_110_N TR_110_S TR_115_N TR_115_S ... TR_95_S

当我尝试匹配时,我得到所有NAs

> match<-match(sel, All_travs$TRAV_No,)
> match
 [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

我无法理解这种行为,或者如何正确过滤我的这个载体。有什么建议吗?

0 个答案:

没有答案