将 r 数据框中的列字符串转换为数字

2024-05-13

我有一个数据框,其中有一列字符串,如下所示:

    mydata <- c("-1.356670,35.355030",
            "-1.356670,35.355030", 
            "-1.356620,35.355890", 
            "-1.356930,35.358660", 
            "-1.357000,35.359060"
    )

    df <- data.frame(mydata)

我想将其转换为包含两列的数据框”long and lat,每个都是数字类型。做这个的最好方式是什么?我尝试过使用lapply,但似乎无法使其发挥作用。


使用base R,您可以执行以下操作:

df$Long <- as.numeric(sapply(strsplit(as.character(df$mydata), ","), function(x) x[1]))
df$Lat <- as.numeric(sapply(strsplit(as.character(df$mydata), ","), function(x) x[2]))

               mydata     Long      Lat
1 -1.356670,35.355030 -1.35667 35.35503
2 -1.356670,35.355030 -1.35667 35.35503
3 -1.356620,35.355890 -1.35662 35.35589
4 -1.356930,35.358660 -1.35693 35.35866
5 -1.357000,35.359060 -1.35700 35.35906

Or with tstrsplit() from data.table:

df$Long <- as.numeric(tstrsplit(df$mydata, ",")[[1]])
df$Lat <- as.numeric(tstrsplit(df$mydata, ",")[[2]])

还带有tstrsplit() from data.table正如@clmarquart 提议的:

setDT(df)[, c("lat", "long") := tstrsplit(mydata, ",", fixed = TRUE)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 r 数据框中的列字符串转换为数字 的相关文章

随机推荐