相关疑难解决方法(0)

将列中以逗号分隔的字符串拆分为单独的行

我有一个数据框,如下所示:

data.frame(director = c("Aaron Blaise,Bob Walker", "Akira Kurosawa", 
                        "Alan J. Pakula", "Alan Parker", "Alejandro Amenabar", "Alejandro Gonzalez Inarritu", 
                        "Alejandro Gonzalez Inarritu,Benicio Del Toro", "Alejandro González Iñárritu", 
                        "Alex Proyas", "Alexander Hall", "Alfonso Cuaron", "Alfred Hitchcock", 
                        "Anatole Litvak", "Andrew Adamson,Marilyn Fox", "Andrew Dominik", 
                        "Andrew Stanton", "Andrew Stanton,Lee Unkrich", "Angelina Jolie,John Stevenson", 
                        "Anne Fontaine", "Anthony Harvey"), AB = c('A', 'B', 'A', 'A', 'B', 'B', 'B', 'A', 'B', 'A', 'B', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'A'))
Run Code Online (Sandbox Code Playgroud)

如您所见,director列中的某些条目是由逗号分隔的多个名称.我想将这些条目拆分为单独的行,同时保持另一列的值.例如,上面数据框中的第一行应该分成两行,director列中各有一个名称,列中有"A" …

string split r r-faq

93
推荐指数
4
解决办法
3万
查看次数

R:我设置stringsAsFactors = F,但仍然得到"无效因子级别,NA生成"错误

有人可以帮我解决这个问题吗?任何建议都非常感谢!

我开始时:

A <- data.frame(stringsAsFactors = F)
A <- edit(A)
Run Code Online (Sandbox Code Playgroud)

然后我为A填写了一些值,所以它看起来像这样:

A
  var1  var2
1    a x,y,z
2    b   p,q
3    c   g,h
Run Code Online (Sandbox Code Playgroud)

我的目标是以这种形式获得数据框:

  var1  var2
1    a     x
2    a     y
3    a     z
4    b     p
5    b     q  
6    c     g
7    c     h
Run Code Online (Sandbox Code Playgroud)

这就是我尝试实现它的方式:

A2 <- data.frame(stringsAsFactors = F)
for(i in 1:nrow(A)){
  if(grepl(",", A[i,2])){
    split <- unlist(strsplit(A[i,2], ","))

    for(j in 1:length(split)){
        newrow <- c(A[i,1],split[j])
        A2 <- rbind(A2, newrow)
    }
  }else{
    A2 <- rbind(A2, A[i,])
  }
} …
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
5841
查看次数

标签 统计

r ×2

r-faq ×1

split ×1

string ×1