R 拆分以逗号分隔的地址

R 拆分以逗号分隔的地址,r,R,我有一个房屋销售交易的数据框架。目前地址是格式的 1 Accacia Avenue,This Town,This City,A10 1AA. 有没有办法在data.frame中将其拆分为不同的列,同时删除, 我现在已经创建了一个单独的向量,只包含地址 中的地址存储在数据帧-数据的Address列中 head(data$Address) [1] 22 Amesbury Road, Feltham (TW13 5HJ) [2]Flat 11, Gloucester Court, Links R

我有一个房屋销售交易的数据框架。目前地址是格式的

  1 Accacia Avenue,This Town,This City,A10 1AA.
有没有办法在data.frame中将其拆分为不同的列,同时删除

我现在已经创建了一个单独的向量,只包含地址

中的地址存储在数据帧-
数据的Address列中

head(data$Address)
[1] 22 Amesbury Road, Feltham (TW13 5HJ)
[2]Flat 11, Gloucester Court, Links Road, London (W3 0EW)
我需要把它分成两部分

"Address1", "Address2", "Address3"
我还需要删除
()
中的邮政编码,因为我已经在一个单独的字段中删除了它。

库(tidyr)
library(tidyr)
df <- data.frame(address = c("1 Accacia Avenue,This Town,This City,A10 1AA"))
separate(df , address , c("country" , "town" , "city" , "street") , ",")



# country             town      city      street
# 1 Accacia Avenue This Town This City   A10 1AA
df以你为例

a  <- c("1 Accacia Avenue,This Town,This City,A10 1AA.")
这将提供一个列表,如果需要,可以取消该列表()

[[1]]
[1] "1 Accacia Avenue" "This Town"        "This City"       
[4] "A10 1AA."

unlist(strsplit(a,","))

[1] "1 Accacia Avenue" "This Town"        "This City"       
[4] "A10 1AA."  

当然,因为您有一个data.frame(),所以需要使用lappy或sapply。如果您提供了一个可复制的示例,我们可以向您展示应用函数如何满足您的需求。

您也可以尝试使用
splitstackshape

[[1]]
[1] "1 Accacia Avenue" "This Town"        "This City"       
[4] "A10 1AA."

unlist(strsplit(a,","))

[1] "1 Accacia Avenue" "This Town"        "This City"       
[4] "A10 1AA."  
# using df from Nader Hisham's answer

library(splitstackshape)
out = setnames(cSplit(df, "address", ","), c("country", "town", "city", "street"))

#> out
#            country      town      city  street
#1: 1 Accacia Avenue This Town This City A10 1AA

这可能不是实现所需的最佳方式(有几个原因),但它应该相当容易理解。这假设您的数据帧名为
df
,地址字符串位于名为
address
的变量中

首先确保您的地址存储为字符串:如果
class(df$Address)
返回
“factor”
而不是
“character”
,则可以使用

df$Address <- as.character(df$Address)
(实际上,对于您所描述的内容,您可能不需要
取消列表
,但有时会更方便。)

如果要从数据帧中删除
splitAdd
列:

df$splitAdd <- NULL

df$splitAdd欢迎加入SO。你应该提供一个可复制的例子,展示你迄今为止尝试过的东西。请阅读数据是如何导入的?为什么不使用
read.csv()
?这也可以通过
read.table
轻松完成
read.table(text=as.character(df$address),sep=',,stringsAsFactors=FALSE)
df$streetAdd <- unlist(lapply(df$splitAdd, function(x){x[1]}))
df$town <- unlist(lapply(df$splitAdd, function(x){x[2]}))
df$city <- unlist(lapply(df$splitAdd, function(x){x[3]}))
df$code <- unlist(lapply(df$splitAdd, function(x){x[4]}))
df$splitAdd <- NULL