2017-08-18 10 views
1

私は約450Kのメチル化ベータ値を含むデータフレームを持っています。 2つのサンプルについて450プローブ。このデータは、3つの列に表示され、次のようになりますされています1つの列の値が行の名前になるようにデータフレームを並べ替えるにはどうすればよいですか?

>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 

それが見えるように私は、プローブIDがrownamesであり、サンプルIDが列名になるように、このdata.frameを再配置したいと思いますこのように:

>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") 

をしかし、これはICGCの各プローブIDとして機能しなかった(2個のサンプルがあるとして)列に二回表示されます。私も試みた:

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

しかし、これは同じ問題がありました。このデータをこのように並べ替える理由は、ベータ値をM値に変換し、このデータをcpg.annotate(BioconductorパッケージDMRcateで利用可能)のオブジェクトとして使用するためです.cpg.annotateにはオブジェクトが必要です一意のイルミナプローブIDを列名として使用し、一意のサンプルIDを列名として使用します。

ありがとうございました!

答えて

3

あなたは非常に近いです。 spreadファンクションから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 

データ:あなたがこれを行うことができ、ベースRで

ICGC <- read.table(text = "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", 
        header = TRUE, stringsAsFactors = FALSE) 
2

:異なる視点について

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 
1

を、あなたもreshapemeltを使用することができます。

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 
関連する問題