2016-07-14 10 views
0

このデータフレーム(829x2)は、最初の列が別の行列の行番号で構成されています。これらの行番号を2番目のデータフレーム(676X2)の2番目の列の値(ID番号)で置き換える必要があります。ここでrのデータフレーム内の値の行名の置換

は、最初のデータフレームのデータフレーム1及び2の最初の数行は

データフレーム1:

Col1(rownames to be replaced)   Col2 
X1 167         -2.623973e-01 
X2 c(14, 275)       -2.241113e-01 
X3 4         -3.066684e-01 
X4 c(493, 165, 170, 187, 224, 246, 262)-2.369324e-01 
X8 c (207, 233, 235, 236, 622, 624) -8.503367e-02 
X10 369        -2.217171e-01 

データフレーム2:

だから、
Col1  Col2(Data I want replace the rownames) 
1 Formic C00058 
2 Methanoic C00058 
3 Ethanoic C00033 
4 Acetic C00033 
5 Propionic C00163 
6 Propanoic C00163 
7 Butyric C00246 

、ここで私が希望です(これは単なる例であり、数字は正確ではない)

Col1        Col2 
X1 C00043       -2.623973e-01 
X2 c(C00012, C00125)    -2.241113e-01 
X3 C00033       -3.066684e-01 
X4 c(C00023, C00078, etc...)  -2.369324e-01 
ここで

データフレーム1 KEGGnumber =のCol1のCor = Col2に

>dput(datamap2[1:10,]) 
structure(list(KEGGnumber = structure(list(X1 = 167, X2 = c(14, 
275), X3 = 4, X4 = c(493, 165, 170, 187, 224, 246, 262), X8 = c(207, 
233, 235, 236, 622, 624), X10 = 369, X11 = c(207, 233, 235, 236, 
622, 624), X12 = 17, X13 = c(225, 240, 622, 623, 626, 631), X21 = c(447, 
579)), .Names = c("X1", "X2", "X3", "X4", "X8", "X10", "X11", 
"X12", "X13", "X21")), Cor = c(-0.26239726267789, -0.22411133150271, 
-0.30666840337651, -0.236932418052063, -0.085033673316946, -0.221717142242715, 
-0.23574540607512, -0.254068790827129, -0.410952995109905, 0.0585077720606303 
)), .Names = c("KEGGnumber", "Cor"), row.names = c("X1", "X2", 
"X3", "X4", "X8", "X10", "X11", "X12", "X13", "X21"), class = "data.frame") 
+0

あなたのデータフレーム1を出力できますか?それは 'Col1'の各セルにどのようなデータ構造があるかによって異なります。 – Psidom

+0

Col1はリストとして整形されますが、私はunlist()することができます。あなたはDputで精緻化できますか?フィクションに精通していません。 –

+0

'dput(dataframe 1)'をあなたの質問に貼り付けると、私たちが助けてくれるはずです。データフレームの 'dput'を使ってデータフレームの実際の構造を出力し、結果を貼り付けることができます。 – Psidom

答えて

0

のdput()がここにlapplyを使用してそれを行うための一つの方法です。

df$KEGGnumber <- lapply(df$KEGGnumber, function(rows) df2$Col2[rows]) 
df 
#  KEGGnumber  Cor 
# X1   C00058 -0.2623973 
# X2 C00163, C00246 -0.2241113 
# X3   C00033 -0.3066684 
# X4 C00033, C00033 -0.2369324 

私は少しので、あなたのデータを修正あなたが提供したデータフレーム2には意味をなされるでしょう:

df 
# KEGGnumber  Cor 
# X1   2 -0.2623973 
# X2  5, 7 -0.2241113 
# X3   4 -0.3066684 
# X4  3, 4 -0.2369324 

df2 
#  Col1 Col2 
# 1 Formic C00058 
# 2 Methanoic C00058 
# 3 Ethanoic C00033 
# 4 Acetic C00033 
# 5 Propionic C00163 
# 6 Propanoic C00163 
# 7 Butyric C00246 
+1

を編集してdf $ KEGGnumberであるべきIDのリストを作成しますが、df $ KEGGnumberとして設定しようとするとID番号ではなく数字が出力されます。 –

+0

データフレーム内の 'Col2'は2文字ですか? 'df2 $ Col2 < - as.character(df2 $ Col2)'のような文字に変換する必要があります。 – Psidom

+0

はいクラスの文字は –

関連する問題