我有一个数据框,如下所示:
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" …
有人可以帮我解决这个问题吗?任何建议都非常感谢!
我开始时:
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)