はR

2017-08-05 3 views
1

にインデックスを行にdata.frameの最初の列を変換する私はdata.frameを持っている:はR

 target_id sample1 sample10 sample100 sample101 sample102 sample103 
1: ENST00000000233  9  0 3499.51   0   0   0 
2: ENST00000000412  0  0  0.00   0   0   0 
3: ENST00000000442  0  0  0.00   0   0   0 
4: ENST00000001008  0  0  0.00   0   0   0 
5: ENST00000001146  0  0  0.00   0   0   0 
6: ENST00000002125  0  0  0.00   0   0   0 

私は$のTARGET_IDが行名になります別のdata.frame、に変換したいと思います。

   sample1 sample10 sample100 sample101 sample102 sample103 
ENST00000000233  9  0 3499.51   0   0   0 
ENST00000000412  0  0  0.00   0   0   0 
ENST00000000442  0  0  0.00   0   0   0 
ENST00000001008  0  0  0.00   0   0   0 
ENST00000001146  0  0  0.00   0   0   0 
ENST00000002125  0  0  0.00   0   0   0 

それはRで、このようなdata.frameを作成することは可能です:(ENST00000000233たとえば)具体的には、私はそれらの遺伝子実体にアクセスすることができ、その後の数値データ(サンプルの列)でクラスタリングを実行したいですか?

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

答えて

3

まず、あなたのデータの例。

mydf <- 
structure(list(target_id = c("ENST00000000233", "ENST00000000412", 
"ENST00000000442", "ENST00000001008", "ENST00000001146", "ENST00000002125" 
), sample1 = c(9L, 0L, 0L, 0L, 0L, 0L), sample10 = c(0L, 0L, 
0L, 0L, 0L, 0L), sample100 = c(3499.51, 0, 0, 0, 0, 0), sample101 = c(0L, 
0L, 0L, 0L, 0L, 0L), sample102 = c(0L, 0L, 0L, 0L, 0L, 0L), sample103 = c(0L, 
0L, 0L, 0L, 0L, 0L)), .Names = c("target_id", "sample1", "sample10", 
"sample100", "sample101", "sample102", "sample103"), class = "data.frame", row.names = c("1:", 
"2:", "3:", "4:", "5:", "6:")) 

コードが追加されました。

result <- mydf[-1] 
row.names(result) <- mydf$target_id 
result 
       sample1 sample10 sample100 sample101 sample102 sample103 
ENST00000000233  9  0 3499.51   0   0   0 
ENST00000000412  0  0  0.00   0   0   0 
ENST00000000442  0  0  0.00   0   0   0 
ENST00000001008  0  0  0.00   0   0   0 
ENST00000001146  0  0  0.00   0   0   0 
ENST00000002125  0  0  0.00   0   0   0 

シンプルではありませんか?

+0

を使用しているが、あなたの答えをありがとう!'row.names(result)< - mydf $ target_id'を実行したとき、エラーが発生しました:' Row.namesのエラー< - 。data.frame(* tmp *、value = c( "ENST00000000233"、: 無効な 'row.names' length' –

+0

私はこのエラーを修正しました。私のdata.frameもdata.tableクラスでしたので、data.frameとして保存します –

0

それは新しい変数を定義することなく達成することができます:ここで

df <- data.frame(df[,-1], row.names = df[,1]) 


#     sample1 sample10 sample100 sample101 sample102 sample103 
# ENST00000000233  9  0 3499.51   0   0   0 
# ENST00000000412  0  0  0.00   0   0   0 
# ENST00000000442  0  0  0.00   0   0   0 
# ENST00000001008  0  0  0.00   0   0   0 
# ENST00000001146  0  0  0.00   0   0   0 
# ENST00000002125  0  0  0.00   0   0   0 
+0

あなたの提案をありがとうございます、残念ながら私は次のエラーがあります: 'df [、1]のエラー: 'closure'タイプのオブジェクトはサブセット化不可能です –

+0

@OlhaKholodそのため、[再現可能な例]を提供する必要があります(https://stackoverflow.com/questions/5963269/how-to- – Masoud

+0

@OlhaKholod、 'type 'closure'のオブジェクトは関数を意味します。あなたは、あなたの質問に常に含めるべきです。あなたの 'data.frame'の名前を変更する' 'R'関数の名前' 'df''を使用しています。同様の理由から、 'data.table'パッケージの' dt'も避けるべきです。 –

0

はオプションがtidyverse

library(tidyverse) 
df1 %>% 
    remove_rownames() %>% 
    column_to_rownames(var = 'target_id') 
#    sample1 sample10 sample100 sample101 sample102 sample103 
#ENST00000000233  9  0 3499.51   0   0   0 
#ENST00000000412  0  0  0.00   0   0   0 
#ENST00000000442  0  0  0.00   0   0   0 
#ENST00000001008  0  0  0.00   0   0   0 
#ENST00000001146  0  0  0.00   0   0   0 
#ENST00000002125  0  0  0.00   0   0   0