我希望我能解释清楚我的问题是有道理的!被困在这上面好几个小时了。
我所拥有的:数据栏是基因(基因a,基因b,基因c,等等)。行是在两种条件下的单元簇(集群a_ctrl、集群a_exp、clusterb_ctrl等)。
我想要的是:我想要的是相反的方式(但不是换位!)因此,列是集群(集群a、集群b、集群c等)。行为基因a_ctrl、基因a_exp、基因b_ctrl等两种条件下的基因。
谢谢你的帮助!
发布于 2022-10-14 19:16:21
首先,一些假数据:
df1 <- data.frame(cluster = c("clustera_ctrl", "clustera_exp", "clusterb_ctrl", "clusterb_exp"),
gene_a = 1:4,
gene_b = 5:8,
gene_c = 9:12)
cluster gene_a gene_b gene_c
1 clustera_ctrl 1 5 9
2 clustera_exp 2 6 10
3 clusterb_ctrl 3 7 11
4 clusterb_exp 4 8 12方法使用独立的、pivot_longer和pivot_wider与tidyr。我认为使用一个pivot_longer有一种更短的方法,但这一点应该足够清楚。
library(tidyverse)
df1 %>%
separate(cluster, c("cluster", "type"), sep = "_") %>%
pivot_longer(starts_with("gene")) %>%
pivot_wider(names_from = c(name, type), values_from = value)
# A tibble: 2 × 7
cluster gene_a_ctrl gene_b_ctrl gene_c_ctrl gene_a_exp gene_b_exp gene_c_exp
<chr> <int> <int> <int> <int> <int> <int>
1 clustera 1 5 9 2 6 10
2 clusterb 3 7 11 4 8 12https://stackoverflow.com/questions/74073487
复制相似问题