我有一个 Dataframe ,看起来类似于下面的内容
Sex <- c("F", "F", "M", "M", "F")
Phenotype <- c("Control", "Experimental", "Experimental", "Control", "Control")
MOp_Amygdala <- c(10, 15, 2, 10, 8)
MOp_Thalamus <- c(11, 16, 3, 11, 9)
MOp_Cerebellum <- c(9, 14, 1, 9, 7)
MOq_Cortex <- c(8, 11, 1, 8, 6)
MOq_Striatum <- c(6, 9 , 8, 6, 8)
df <- data.frame(Sex, Phenotype, MOp_Amygdala, MOp_Thalamus, MOp_Cerebellum, MOq_Cortex, MOq_Striatum)
字符串
我想把所有以MOp开始的列折叠成一个单独的列,称为“初级运动皮层”。
这是我到目前为止所拥有的:
temp <- df %>%
unite(col="Primary_Motor_Cortex", MOp_Amygdala, MOp_Thalamus, MOp_Cerebellum)
型
从技术上讲,这实现了我想要的,但它的可读性不是很好,因为样本的所有值都进入了 Dataframe 的同一个单元格。理想情况下,我希望每个值都进入自己的行,复制每个相应的性别和表型。
我理解这意味着剩下的两列,Moq_Cortex和MOq_Striatum,将有一些空单元格,但我对此没有意见。
这是我想要的最终输出。因为列“初级运动皮层”将有更多的行,其他两列将有一些空白单元格。
的数据
2条答案
按热度按时间c0vxltue1#
我相信期望的输出可能不如一些“更整洁”的解决方案有用。如果所有行都表示唯一的观察结果,并且我们只想聚合“初级运动皮层”信息,如果我们创建一个列表列,我们可能会得到更多可操作的结果:
字符串
我们可以很容易地访问“primary_motor_cortex”列:
型
z6psavjg2#
您可以使用
pivot_longer
(具有某些规范)和mutate
/distinct
(假设您希望对折叠列中的值求和):字符串
输出量
型