1

我在 R 中有一列用逗号分隔的名称。

例如:

    John, Doe
    Rebecca, Homes

我想将名字和姓氏分成单独的列。

我遇到的另一个问题是,有时会有一个没有逗号的名称。例如:

    John, Doe
    Rebecca, Homes
    Organization LLC

我已经研究过使用 strsplit(a, ","),但我在 strsplit(wn,​​ ",") 中收到以下错误错误:非字符参数。

这是 Stack Convert 逗号分隔条目到列中的一个示例

任何有关解决这个简单问题的帮助将不胜感激。谢谢。

4

1 回答 1

1

分两步:

  1. 您可以使用read.tablewithfill=TRUE来读取所有行(您也可以使用 readLines)
  2. 不带逗号作为分隔符处理。

代码是这样的:

aa <- read.table(text='John, Doe
Rebecca, Homes
Organization LLC',sep=',',fill=TRUE,colClasses='character')

## treat lines without comma
aa[nchar(aa$V2) ==0,] <- 
      do.call(rbind,strsplit(aa[nchar(aa$V2) ==0,]$V1,' ')) ## space as separator :I assume you 
                                                               don't have compound  name

> aa
            V1     V2
1         John    Doe
2      Rebecca  Homes
3 Organization    LLC

编辑 更好的方法:我使用正则表达式用逗号替换任何空格以具有正则分隔符。我假设您没有任何复合名称。

ff <- readLines(textConnection('John, Doe
Rebecca, Homes
Organization LLC'))
do.call(rbind,
strsplit(gsub('[ ]|, |,[ ]',',',ff),','))
于 2013-04-26T16:46:21.280 回答