隔离r数据框中的部分文本

时间:2014-12-22 23:56:39

标签: r

我有一个r数据框,在一列中包含美国州和县名。数据格式为:

United States - State name - County name

每个单元格都是一个独特的县。例如:

United States - North Carolina - Wake County
United States - North Carolina - Warren County
etc.

我需要将列分成2列,一列只包含州名,另一列只包含县名。我已经尝试过sub和gsub,但没有得到任何结果。我知道这对于r专家来说可能是一件简单的事情,但我是一个新手。如果有人能指出我正确的方向,我将非常感激。

2 个答案:

答案 0 :(得分:3)

您可以使用tidyr的{​​{1}}功能:

separate

如果您在问题中显示数据(包括美国国家/地区),并且您的数据框名为df,并且包含数据的当前列名为currentColumn。

示例:

library(tidyr)
df <- separate(df, currentColumn, into = c("Country", "State", "County"), sep = " - ")

答案 1 :(得分:1)

使用read.table,并假设您的数据位于df$var

read.table(text=df$var,sep="-",strip.white=TRUE,
           col.names=c("Country","State","County"))

如果速度是一个问题,那么strsplit会更快:

setNames(data.frame(do.call(rbind,strsplit(df$var,split=" - "))),
         c("Country","State","County"))

两者都给:

#        Country          State        County
#1 United States North Carolina   Wake County
#2 United States North Carolina Warren County