我有一个r数据框,在一列中包含美国州和县名。数据格式为:
United States - State name - County name
每个单元格都是一个独特的县。例如:
United States - North Carolina - Wake County
United States - North Carolina - Warren County
etc.
我需要将列分成2列,一列只包含州名,另一列只包含县名。我已经尝试过sub和gsub,但没有得到任何结果。我知道这对于r专家来说可能是一件简单的事情,但我是一个新手。如果有人能指出我正确的方向,我将非常感激。
答案 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