名前付きベクトルを行としてデータフレームに追加し、列名の順序に従って並べ替えるにはどうすればよいですか?

キショア

データフレームの列名に従ってベクトルのコンポーネントを並べ替えて、名前付きベクトルをデータフレームに追加するにはどうすればよいですか?

一度に1行ずつデータフレームを作成する必要があります。名前付きベクトルは、何らかの処理によって取得され、挿入される行の値を提供します。問題は、名前付きベクトルにデータフレーム列と同じ順序のコンポーネントがないことです。これによりrbind、間違った結果生成されます。非常に単純化されたサンプルコードを次に示します。

df = data.frame(id=1:2, va=11:12, vb=21:22, vc=31:32)
v1 = c(id=4, va=14, vb=25, vc=NA)
df = rbind(df, v1)

これまでのところ、これが正しい結果を生み出すほど良いです。次のベクトル処理は次のようになります。

v2 = c(va=19, id=9, vc=34, vb=NA)
df = rbind(df, v2)

これにより、誤った結果が生成されます。正しい結果は次のようになります

id va vb vc
1  1 11 21 31
2  2 12 22 32
3  4 14 25 NA
4  9 19 NA 34
マシュー・ランドバーグ

v2前からデータフレームを作成しますrbind

rbind(df, as.data.frame(t(v2)))
##   id va vb vc
## 1  1 11 21 31
## 2  2 12 22 32
## 3  4 14 25 NA
## 4  9 19 NA 34

これが機能する理由は次のとおりです。

v2名前はありますが、次の列ベクトルのように機能しますas.data.frame

as.data.frame(v2)
##    v2
## va 19
## id  9
## vc 34
## vb NA

したがって、データを転置して正しい形式にする必要があります。

as.data.frame(t(v2))
##   va id vc vb
## 1 19  9 34 NA

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ