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

  • 本文关键字:文本 数据 隔离 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 专家来说可能是一件简单的事情,但我是新手。 如果有人能指出我正确的方向,我将不胜感激。

你可以使用 tidyrseparate函数:

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

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

例:

df <- data.frame(currentColumn = c("United States - North Carolina - Wake County",
 "United States - North Carolina - Warren County"), val = rnorm(2))
df
#                                   currentColumn       val
#1   United States - North Carolina - Wake County 0.8173619
#2 United States - North Carolina - Warren County 0.4941976
separate(df, currentColumn, into = c("Country", "State", "County"), sep = " - ")
#        Country          State        County       val
#1 United States North Carolina   Wake County 0.8173619
#2 United States North Carolina Warren County 0.4941976

使用 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

最新更新