R 如何在数据帧上反转聚合命令?

R 如何在数据帧上反转聚合命令?,r,R,如果要转换以下data.frame: >M name ID a 1 b,c 2 d,e 3 f 4 对于这一点: >M name ID a 1 b 2 c 2 d 3 e 3 f 4 如何对第一列的所有元素进行此转换 谢谢您可以从tidyr使用unnest(): library(dplyr); library(tidyr) mutate(M, n

如果要转换以下data.frame:

  >M
  name   ID
  a       1
  b,c     2
  d,e     3
  f       4
对于这一点:

  >M
 name  ID
 a     1
 b     2
 c     2
 d     3
 e     3
 f     4
如何对第一列的所有元素进行此转换

谢谢

您可以从
tidyr
使用
unnest()

library(dplyr); library(tidyr)
mutate(M, name = strsplit(name, ",")) %>% unnest(name)
Source: local data frame [6 x 2]

     ID  name
  (chr) (chr)
1     1     a
2     2     b
3     2     c
4     3     d
5     3     e
6     4     f
您可以从
tidyr
使用
unnest()

library(dplyr); library(tidyr)
mutate(M, name = strsplit(name, ",")) %>% unnest(name)
Source: local data frame [6 x 2]

     ID  name
  (chr) (chr)
1     1     a
2     2     b
3     2     c
4     3     d
5     3     e
6     4     f

下面是一个基本的R解决方案:

# split the names into a list
nameList <- strsplit(df$name, split=",")
# get your new data.frame
newdf <- data.frame(names=unlist(nameList), ID=rep(df$ID, sapply(nameList, length)))
输出

> newdf
  names ID
1     a  1
2     b  2
3     c  2
4     d  3
5     e  3
6     f  4

下面是一个基本的R解决方案:

# split the names into a list
nameList <- strsplit(df$name, split=",")
# get your new data.frame
newdf <- data.frame(names=unlist(nameList), ID=rep(df$ID, sapply(nameList, length)))
输出

> newdf
  names ID
1     a  1
2     b  2
3     c  2
4     d  3
5     e  3
6     f  4
, , , ,