我有一个数据框,其中有一列字符串如下:
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
和 lat
的数据框,每列都是数字类型。最好的方法是什么?我已尝试使用 lapply
,但似乎无法正常工作。
最佳答案
使用基础 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
或者使用 data.table
中的 tstrsplit()
:
df$Long <- as.numeric(tstrsplit(df$mydata, ",")[[1]])
df$Lat <- as.numeric(tstrsplit(df$mydata, ",")[[2]])
还有@clmarquart 提出的data.table
中的tstrsplit()
:
setDT(df)[, c("lat", "long") := tstrsplit(mydata, ",", fixed = TRUE)]
关于r - 将列字符串转换为 r 数据框中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54617973/