将一个因子或字符串变量分割成两个新变量。

3
大家好,我有一个数据框,其中有一列名为the_geom_OBJECTID的因子变量。
                               the_geom_OBJECTID 
                                           <fct>
1   POINT  (-73.8472005205491 40.89470517661004) 
2  POINT  (-73.82993910812405 40.87429419303015) 
3  POINT  (-73.82780644716419 40.88755567735082) 
4 POINT  (-73.90564259591689 40.895437426903875) 
5  POINT  (-73.91258546108577 40.89083449389134) 
6  POINT  (-73.90281798724611 40.88168737120525)

我希望用两列替换这个数据框的一列,一列是经度,另一列是纬度。
预期输出:
           longitude            latitude
               <dbl>               <dbl>
1  -73.8472005205491   40.89470517661004
2 -73.82993910812405   40.87429419303015
3 -73.82780644716419   40.88755567735082
4 -73.90564259591689  40.895437426903875
5 -73.91258546108577   40.89083449389134
6 -73.90281798724611   40.88168737120525

把变量转换成字符串格式,再创建两个新的列,这样会更好吗?
1个回答

1
最简单的方法是使用sf::st_coordinates()函数实现:
sf::st_coordinates(the_geom_OBJECTID)

更新:

首先将您的数据框转换为sf对象。

library(sf)

df <- data.frame(the_geom_OBJECTID = c("POINT  (-73.8472005205491 40.89470517661004)", 
                                       "POINT  (-73.82993910812405 40.87429419303015)", 
                                       "POINT  (-73.82780644716419 40.88755567735082)", 
                                       "POINT  (-73.90564259591689 40.895437426903875)", 
                                       "POINT  (-73.91258546108577 40.89083449389134)", 
                                       "POINT  (-73.90281798724611 40.88168737120525)"))

df_sf <- st_sf(st_as_sfc(df$the_geom_OBJECTID))

然后:

sf::st_coordinates(df_sf)

我得到了这个 sf::st_coordinates(the_geom_OBJECTID) 的错误信息: 在使用方法“st_coordinates”时出错: 对于类“factor”的对象,没有适用的“st_coordinates”方法。 - nenno lillo
你应该包含一个 dput 版本的数据,这样我们才能测试出对你问题的答案。 - Trent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接