我有一个数据框,其中一些单元格包含逗号分隔值的字符串:
d <- data.frame(a=c(1:3),
b=c("name1, name2, name3", "name4", "name5, name6"),
c=c("name7","name8, name9", "name10" ))
我想将那些字符串分开,每个名称都拆分到自己的单元格中。使用
很容易实现。tidyr::separate_rows(d, b, sep=",")
如果一次只对一列进行操作,那么这是可行的。但是我无法同时为"b"列和"c"列执行此操作,因为这需要每个字符串中的名称数量相同。而不是写
tidyr::separate_rows(d, b, sep=",")
tidyr::separate_rows(d, c, sep=",")
有没有一种方法可以用一行代码来完成这个操作,比如使用apply?类似于:apply(d, 2, separate_rows(...))
不确定如何向separate_rows()
函数传递参数。
tidyr
,您可以尝试像这样的循环:for(col in c("b", "c")) d <- separate_rows_(d, col, sep = ",")
- talatd %>% Reduce(f = separate_rows_, x = c("b", "c"))
- G. Grothendieck