R-将具有字符串值(包含2个数字并用逗号分隔)的dataframe列拆分为2列

时间:2018-12-08 23:49:01

标签: r dataframe

我有一个数据框ddata,其中变量Location的字符串格式的纬度和经度用逗号分隔。因此,当我在控制台中键入ddata$Location时,会看到以下内容:

"33.9829, -118.3338"
"34.0454, -118.3157"
"33.942,  -118.2717"
"33.9572, -118.2717"

如何用逗号(定界符)分隔此列,并使其变为2列,分别为:LongitudeLatitude?我已经尝试了split函数,但是无法正常工作。

3 个答案:

答案 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"), ",")