2017-08-21 5 views
0

私は患者IDの名前を付けられたデータフレームのリストを持っています。マージされたデータフレームの新しい列に個々のデータフレームの名前を追加

df.list <- (1297, 2468, 3323, 4453, 4785, 6489, 7338, 8244, 9345, etc.) 

各データフレームは、(これは非常に単純化されているが、それは全体のポイントを取得します)、このようなデータを持っている:

A  B  C  D 
1  8  4  2 
3  4  6  8 

私はすべてのように、リスト内のデータフレームのすべてをマージしたいです1つの列に値があり、別の列にBの値があります。

ただし、このデータがどの患者から来たのかを示す新しい列を追加します。だから私はその特定の行のデータが来たデータフレーム(患者ID)の名前を抽出し、この値をマージされたデータフレームの新しい列に追加したいと思います。私はrbindを使ってそれをマージしようとしていますが、患者ID情報を持つ別の列を追加する方法はわかりません。すべてのヘルプは高く評価され

A  B  C  D  Patient ID 

の目標は、最終的なデータフレームに次の情報を持つことです!

ありがとうございます!

+0

データはどのように構造化されていますか?あなたはデータフレームのリストを持っていて、その名前に患者IDが入っていますか? – lebelinoz

+0

@lebelinozうん、それはまさにその方法です!大きなデータフレームにマージされている各データフレームにはさまざまな数の行があるため、新しいデータフレームでは、データの個々の行がどこに由来するかを示す患者IDが必要です。 –

答えて

1

以下の注記で再現可能な形式で示された入力データを使用して、データフレームをまとめてrbindとします。

df2 <- do.call("rbind", mget(df.list)) 
df2$id <- sub("[.].*", "", rownames(df2)) 
rownames(df2) <- NULL 

注:我々は、この入力データを想定:

df.list <- c(1297, 2468, 3323, 4453, 4785, 6489, 7338, 8244, 9345) 
df.list <- as.character(df.list) 
Lines <- "A  B  C  D 
1  8  4  2 
3  4  6  8" 
df <- read.table(text = Lines, header = TRUE) 
for(nm in df.list) assign(nm, df) 
行名は次のように、 df2、我々は所望のデータフレームを得ることができるので、行番号を示すサフィックスが続くIDが含まれます
関連する問題