[解決済み] Rでvlookupとfill down(Excelのような)を行うには?
2022-03-07 18:31:49
質問
105000行、30列のデータセットがあります。カテゴリ変数があり、それを数値に割り当てたいと思います。Excelでは、おそらく次のようなことを行うでしょう。
VLOOKUP
と記入します。
で同じことをするにはどうしたらいいでしょうか?
R
?
本来、私が持っているのは
HouseType
変数を計算する必要があります。
HouseTypeNo
. 以下はサンプルデータです。
HouseType HouseTypeNo
Semi 1
Single 2
Row 3
Single 2
Apartment 4
Apartment 4
Row 3
解決方法は?
ご質問の内容を正しく理解するのであれば、Excelと同等のことを行う方法を4つご紹介します。
VLOOKUP
を使い、塗り潰す。
R
:
# load sample data from Q
hous <- read.table(header = TRUE,
stringsAsFactors = FALSE,
text="HouseType HouseTypeNo
Semi 1
Single 2
Row 3
Single 2
Apartment 4
Apartment 4
Row 3")
# create a toy large table with a 'HouseType' column
# but no 'HouseTypeNo' column (yet)
largetable <- data.frame(HouseType = as.character(sample(unique(hous$HouseType), 1000, replace = TRUE)), stringsAsFactors = FALSE)
# create a lookup table to get the numbers to fill
# the large table
lookup <- unique(hous)
HouseType HouseTypeNo
1 Semi 1
2 Single 2
3 Row 3
5 Apartment 4
を埋めるための4つのメソッドを紹介します。
HouseTypeNo
の中に
largetable
の値を使って
lookup
テーブルを使用します。
最初に
merge
をベースにしたものです。
# 1. using base
base1 <- (merge(lookup, largetable, by = 'HouseType'))
名前付きベクトルを基本にした2つ目のメソッド。
# 2. using base and a named vector
housenames <- as.numeric(1:length(unique(hous$HouseType)))
names(housenames) <- unique(hous$HouseType)
base2 <- data.frame(HouseType = largetable$HouseType,
HouseTypeNo = (housenames[largetable$HouseType]))
3つ目は
plyr
パッケージを使用します。
# 3. using the plyr package
library(plyr)
plyr1 <- join(largetable, lookup, by = "HouseType")
4つ目は
sqldf
パッケージ
# 4. using the sqldf package
library(sqldf)
sqldf1 <- sqldf("SELECT largetable.HouseType, lookup.HouseTypeNo
FROM largetable
INNER JOIN lookup
ON largetable.HouseType = lookup.HouseType")
の家型がある可能性があるのであれば、その家型に対応した
largetable
には存在しません。
lookup
の場合、左結合が使用されます。
sqldf("select * from largetable left join lookup using (HouseType)")
他のソリューションにも対応した変更が必要でしょう。
それがあなたのやりたかったことですか?どの方法がいいか教えてくれれば、解説を付けます。
関連
-
[解決済み] 不適合な配列のコードエラー
-
[解決済み】rbind エラー。"名前が以前の名前と一致しない"
-
[解決済み】x[[i]]でのエラー:レベル2で再帰的インデックス作成に失敗した
-
[解決済み] lmer エラー: グループ化係数は観測数未満でなければならない
-
[解決済み】エラー - replacement has [x] rows, data has [y].
-
[解決済み】行列式で「数値/複雑な行列/ベクトルの引数を必要とする」というエラーが発生する?
-
[解決済み] 非常に大きなテーブルをデータフレームとして高速に読み込む
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み] data.tableで:=を使用してグループ別に複数のカラムを割り当てる
-
[解決済み] カテゴリ変数のグラフで、カウントの代わりにパーセント % を表示する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:私のコードで予期しないシンボル/入力/文字列定数/数値定数/SPECIALが発生した
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み] テスト
-
[解決済み】reshape2 meltの警告メッセージ
-
[解決済み】Rエラー。"新しい列は既存の列の後に穴を空ける"
-
[解決済み】ggplotのエラー。関数型オブジェクトのスケールを自動的に選択する方法がわかりません。
-
[解決済み】bstTreeの予測値の混乱行列、エラー:'The data must contain some levels that overlap reference'.
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み】 eval(expr, envir, enclos) でのエラー : オブジェクトが見つかりません。
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]