R:将逗号分隔的条目转换为具有非字符的列

时间:2013-04-26 16:33:29

标签: r

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

例如:

    John, Doe
    Rebecca, Homes

我想将名字和姓氏分成不同的列。

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

    John, Doe
    Rebecca, Homes
    Organization LLC

我看过使用strsplit(a,“,”),但是我在strsplit(wn,“,”)中得到以下错误错误:非字符参数。

以下是Stack Convert comma separated entry to columns

中的示例

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

1 个答案:

答案 0 :(得分:1)

分2步:

  1. 您可以read.table使用fill=TRUE来阅读所有行(您也可以使用readLines)
  2. 不使用逗号作为分隔符。
  3. 代码是这样的:

    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
    

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

    ff <- readLines(textConnection('John, Doe
    Rebecca, Homes
    Organization LLC'))
    do.call(rbind,
    strsplit(gsub('[ ]|, |,[ ]',',',ff),','))