Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何重新排列数据框,使一列中的值为行名称?_R_Dataframe_Bioinformatics_Transpose_Tidyverse - Fatal编程技术网

R 如何重新排列数据框,使一列中的值为行名称?

R 如何重新排列数据框,使一列中的值为行名称?,r,dataframe,bioinformatics,transpose,tidyverse,R,Dataframe,Bioinformatics,Transpose,Tidyverse,我有一个数据框,包含两个样本约450个探针的450K甲基化β值。此数据显示在三列中,如下所示: >head(ICGC) submitted_sample_id probe_id methylation_value 1 X932-01-4D cg00000029 0.6 2 X932-01-6D cg00000029 0.4 3 X932-01-4D cg00000108

我有一个数据框,包含两个样本约450个探针的450K甲基化β值。此数据显示在三列中,如下所示:

>head(ICGC)
 submitted_sample_id    probe_id    methylation_value
1  X932-01-4D          cg00000029         0.6
2  X932-01-6D          cg00000029         0.4
3  X932-01-4D          cg00000108         0.3
4  X932-01-6D          cg00000108         0.7
5  X932-01-4D          cg00000109         0.9
6  X932-01-6D          cg00000109         0.1
>head(ICGC_2)
           X932-01-4D    X932-01-6D 
cg00000029    0.6           0.4
cg00000108    0.3           0.7
cg00000109    0.9           0.1
我想重新排列这个data.frame,以便探测ID是行名,样本ID是列名,这样看起来像这样:

>head(ICGC)
 submitted_sample_id    probe_id    methylation_value
1  X932-01-4D          cg00000029         0.6
2  X932-01-6D          cg00000029         0.4
3  X932-01-4D          cg00000108         0.3
4  X932-01-6D          cg00000108         0.7
5  X932-01-4D          cg00000109         0.9
6  X932-01-6D          cg00000109         0.1
>head(ICGC_2)
           X932-01-4D    X932-01-6D 
cg00000029    0.6           0.4
cg00000108    0.3           0.7
cg00000109    0.9           0.1
我试过:

>library(tidyverse)
ICGC_2 <- ICGC %>% remove_rownames %>% column_to_rownames(var = "probe_id")
>库(tidyverse)
ICGC_2%删除_行名%>%column_至_行名(var=“probe_id”)
但这不起作用,因为ICGC中的每个探针ID在列中出现两次(因为有两个样本)。我还尝试:

hello <- data.frame(ICGC[,-2], row.names = ICGC[,2])

你好你很接近了<代码>排列
来自
tidyr
包的功能就是您所需要的

library(tidyverse)

ICGC_2 <- ICGC %>%
  spread(submitted_sample_id, methylation_value) %>%
  remove_rownames() %>%
  column_to_rownames(var = "probe_id")
ICGC_2
           X932-01-4D X932-01-6D
cg00000029        0.6        0.4
cg00000108        0.3        0.7
cg00000109        0.9        0.1
库(tidyverse)
ICGC_2%
扩散(提交的样本id、甲基化值)%>%
删除_rownames()%>%
列到行名称(var=“probe\u id”)
ICGC_2
X932-01-4D X932-01-6D
cg00000029 0.6 0.4
CG0000108 0.3 0.7
CG0000109 0.9 0.1
数据:


ICGC在base R中,您可以执行以下操作:

wICGC <- reshape(ICGC, idvar = "probe_id", 
                       timevar = "submitted_sample_id", direction = "wide")
wICGC <- data.frame(wICGC[,-1], row.names=wICGC[,1])

wICGC

#            methylation_value.X932.01.4D methylation_value.X932.01.6D 
# cg00000029                          0.6                          0.4 
# cg00000108                          0.3                          0.7 
# cg00000109                          0.9                          0.1

wICGC对于不同的透视图,您也可以在
重塑
中使用
melt

library(reshape)
m <- melt(IGC, id=c("submitted_sample_id", "probe_id"))
cast(m, probe_id~submitted_sample_id)

> cast(m, probe_id~submitted_sample_id)
    probe_id X932-01-4D X932-01-6D
1 cg00000029        0.6        0.4
2 cg00000108        0.3        0.7
3 cg00000109        0.9        0.1
库(重塑)
m铸件(m,探头id~提交的样品id)
探头id X932-01-4D X932-01-6D
1 cg00000029 0.6 0.4
2 CG0000108 0.3 0.7
3 CG0000109 0.9 0.1