我有一个数据框ddata
,其中变量Location
的字符串格式的纬度和经度用逗号分隔。因此,当我在控制台中键入ddata$Location
时,会看到以下内容:
"33.9829, -118.3338"
"34.0454, -118.3157"
"33.942, -118.2717"
"33.9572, -118.2717"
如何用逗号(定界符)分隔此列,并使其变为2列,分别为:Longitude
和Latitude
?我已经尝试了split函数,但是无法正常工作。
答案 0 :(得分:3)
由于用,
分隔,所以最简单的选择是read.csv
(假设“位置”类是character
而不是factor
。 ,将其转换为character
(使用as.character(ddata$Location)
)
out <- read.csv(text = ddata$Location, header = FALSE,
col.names = c("Latitude", "Longitude"))
现在,我们cbind
和原始数据一起
ddataNew <- cbind(dddata, out)
答案 1 :(得分:2)
您可以在str_split_fixed
包中使用stringr
函数,如下所示:
library(stringr)
ddata[,c("Longitude", "Latitude")] <- str_split_fixed(ddata$Location, ", ", 2)
它将给您:
# Location Longitude Latitude
# 1 33.9829, -118.3338 33.9829 -118.3338
# 2 34.0454, -118.3157 34.0454 -118.3157
# 3 33.942, -118.2717 33.942 -118.2717
# 4 33.9572, -118.2717 33.9572 -118.2717
然后,如果要删除Location
列,则可以使用此列:
ddata$Location <- NULL
要获取此信息:
# Longitude Latitude
# 1 33.9829 -118.3338
# 2 34.0454 -118.3157
# 3 33.942 -118.2717
# 4 33.9572 -118.2717
希望有帮助。
答案 2 :(得分:1)
library(tidyr)
separate(ddata, ddata$Location, c("Longitude", "Latitude"), ",")