将列值转换为R中的有序其他数据帧

将列值转换为R中的有序其他数据帧,r,dplyr,R,Dplyr,大家好,我需要帮助将列值转换为有序的其他数据帧 这是df1的 Groups Species Values Clusters 1 G1 Cattus_cattus 10 C1,C2,C3 2 G1 Cattus_cattus 10 C7,C8 3 G1 Cattus_cattus 10 C9 4 G2 Canis_lupus 2 C4,C5 5 G2 Canis_lupus

大家好,我需要帮助将列值转换为有序的其他数据帧

这是df1的

  Groups       Species Values Clusters
1     G1 Cattus_cattus     10 C1,C2,C3
2     G1 Cattus_cattus     10    C7,C8
3     G1 Cattus_cattus     10       C9
4     G2   Canis_lupus      2    C4,C5
5     G2   Canis_lupus      2      C24
6     G3  Griseus_lupa     90  C22,C78
7     G4  Griseus_lupa     89      C19
df1$Groups中,我想创建一个有序的df2,其中有4个空行(colnames将df1$Groups中的值排序为df1,例如

df2

  rows C1 C2 C3 C7 C8 C9 C4 C5 C24 C22 C78 C19
1 row1 NA NA NA NA NA NA NA NA  NA  NA  NA  NA
2 row2 NA NA NA NA NA NA NA NA  NA  NA  NA  NA
3 row3 NA NA NA NA NA NA NA NA  NA  NA  NA  NA
4 row3 NA NA NA NA NA NA NA NA  NA  NA  NA  NA
5 row4 NA NA NA NA NA NA NA NA  NA  NA  NA  NA
有人有主意吗

df1数据

structure(list(Groups = structure(c(1L, 1L, 1L, 2L, 2L, 3L, 4L
), .Label = c("G1", "G2", "G3", "G4"), class = "factor"), Species = structure(c(2L, 
2L, 2L, 1L, 1L, 3L, 3L), .Label = c("Canis_lupus", "Cattus_cattus", 
"Griseus_lupa"), class = "factor"), Values = c(10L, 10L, 10L, 
2L, 2L, 90L, 89L), Clusters = structure(c(1L, 6L, 7L, 5L, 4L, 
3L, 2L), .Label = c("C1,C2,C3", "C19", "C22,C78", "C24", "C4,C5", 
"C7,C8", "C9"), class = "factor")), class = "data.frame", row.names = c(NA, 
-7L))

我使用强大的data.table包解决了这个问题。我不确定我是否理解这样操作的目的,但我认为下面的代码解决了您的问题

库(data.table)
图书馆(stringr)
df1=结构(
列表(组=结构(c(1L、1L、1L、2L、2L、3L、4L),
.Label=c(“G1”、“G2”、“G3”、“G4”)、class=“factor”),
物种=结构(c(2L,
2L、2L、1L、1L、3L、3L),
.Label=c(“犬科狼疮”、“猫”,
“格里修斯·卢帕”,class=“factor”),
数值=c(10L、10L、10L、2L、2L、90L、89L),
簇=结构(c(1L、6L、7L、5L、4L、3L、2L),
.标签=c(“C1、C2、C3”、“C19”、“C22、C78”、“C24”、“C4、C5”,
“C7、C8、C9”,class=“factor”),
class=“data.frame”,row.names=c(NA,-7L))
setDT(df1)
newcols=unlist(str_split(df1$Clusters,“,”))
Nrows=uniqueN(df1$组)
Ncols=长度(newcols)
df2=数据表(行=粘贴0(“行”,1L:Nrows))
df2[,(newcols):=NA]
df2
#>行C1 C2 C3 C7 C8 C9 C4 C5 C24 C22 C78 C19
#>1:row1不,不,不,不,不,不
#>第2排:不,不,不,不,不,不
#>第3排:不,不,不,不,不,不,不
#>第4排:不,不,不,不,不,不,不

由(v1.0.0)于2021-03-17创建

非常感谢您的帮助:)