データフレームの列名に従ってベクトルのコンポーネントを並べ替えて、名前付きベクトルをデータフレームに追加するにはどうすればよいですか?
一度に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]
コメントを追加