У меня есть df
, похожее на это:
> df
Names Symbol GeneID Description Paths Colors
IL-1 CP1 3553 Receptor Path1|Path2|Path5 Green|Blue|Pink
IL-6 CFT5 3569 Receptor Path3|Path1|Path2 Red|Green|Blue
TNF DFR4 7124 Receptor Path4|Path3|Path1 Yellow|Red|Green
CCL2 FGTZ 6347 Receptor Path4|Path5|Path2 Yellow|Pink|Blue
IL-1 SED 3552 Receptor Path6|Path5|Path3 Purple|Pink|Red
PAI1 SWA 5054 Receptor Path1 Green
IL-12 SSS 3593 Receptor Path1|Path2 Green|Blue
IL-8 SDE 3576 Receptor Path1|Path3|Path5 Green|Red|Pink
CTGF SDFR 1490 Receptor Path4|Path5|Path1 Yellow|Pink|Green
TGF FDGT 7046 Receptor Path5|Path3 Pink|Red
И я хочу разделить cols
с именами Paths
и Colors
, а затем посчитать, сколько раз каждый Path#
появляется в столбце с именем Paths
.Таким образом, я могу получить df
, как показано ниже, где Path1
появляется 7 раз и его соответствующий цвет - Green
.Path5
появляется 5 раз, поэтому отображается на втором месте с соответствующим цветом (pink
) и т. Д.
> df2
Paths Colors
Path1 Green
Path5 Pink
Path3 Red
Path2 Blue
Path4 Yellow
Path6 Purple
Я пытался сделать это с помощью этого кода:
Paths <- data.frame(do.call('rbind', strsplit(as.character(df$paths), '|', fixed = TRUE)))
df2 <- table(unlist(Paths))
df2 <- data.frame(sort(df2, decreasing = T))
Но это работает только с одной строкой и не разделяет и не разделяет столбцы Paths
и Colors
вместе.
Есть предложения?Предпочтительно с использованием base R