2017-07-10 7 views
0

をデータフレームの列を置き換えます。R - 私はRに非常に新たなんだと、過去に多くの問題を解決するために検索StackOverflowのの多くを使用しますが、私の現在の問題の解決策を見つけることができませんでしたカラム名に基づいて

空のデータフレームの列を、一致する列名に基づいて測定データを含む別のデータフレームの列に置き換えたいとします。ここでは、いくつかの例のデータを、問題を説明するために:

#sample data 
set.seed (543) 
input <- data.frame(replicate(6,sample(0:100,20,rep=TRUE))) 
colnames(input) <- c("Time", "C2", "B1", "A1","A2", "A3") #no specific order predictable here 

#create empty data frame 
test <- data.frame(matrix(0, ncol = 10, nrow = nrow(input))) 
colnames(test) <- c("Time", "A1", "B1", "C1","A2", "B2", "C2","A3", "B3", "C3") 

を私は、列名の検索を行うには

#match column names and generate index vector 
matching <- match(colnames(test),colnames(input)) 
#remove NA from vector 
matching <- matching[!is.na(matching)] 

match機能を適用しかし、私は単純に使用して空の一つに、測定データフレームをコピーするときインデックスベクトル

test[,matching] <- input[,1:ncol(input)] 

「一致」ベクトルで指定された順序に関係なく、Rは常に「左から右へ」の空の「テスト」データフレームを埋めます。私は '入力'データフレームに存在しない列がまだゼロで満たされている 'テスト'データフレームを取得したいと思います。何か案は?前もって感謝します!それは、あなただけの試合のためのパラメータを反転しなければならないとのマッチングのために自分の価値観で

答えて

0

見て、すべてが行く:)

これは動作します:あなたはこれで非常に簡単に行うことができます

matching <- match(colnames(input),colnames(test)) 

注意:

test[,names(input)] <- input 
関連する問題