2016-10-10 6 views
0

私は3つのデータフレームがあります2つのデータフレーム(州や都市など)を関連付けることはできますか?

cities_df、他の分野

cities_df <- data.frame(
    city_name = c("London", "Newcastle Upon Tyne", "Gateshead"), 
    city_population = c(8673713L, 289835L, 120046L), 
    city_area = c(1572L, 114L, NA) 
) 

states_dfの中都市の名前が含まれ、他のフィールド

states_df <- data.frame(
    state_name = c("Greater London", "Tyne and Wear"), 
    state_population = c(123, 456) 
) 

dictionary_dfの間で状態の名前が含まれていますこれには、都市リストとそれに対応する州が含まれています。

dictionary_df <- data.frame(
    city_name = c("London", "Newcastle Upon Tyne", "Gateshead"), 
    state = c("Greater London", "Tyne and Wear", "Tyne and Wear") 
) 

私は特定の状態に属するすべての都市のフィールドを取得する簡単な方法を持つことができるように/リンクcities_dfstates_dfデータフレームを関連付ける方法はありますか?

+0

あなたは共通鍵を持っていますか?サンプルデータを提供できますか? –

+0

いいえ、共通の日付フィールドはありません。実際に私は別のデータを使って作業していますが、わかりやすくするために、私は都市と州に名前を変更しました。どちらも皆DFの関係のタイプを理解しています。 – ccamara

+0

データ構造のアイデアを得るために、わずかな行のサンプルデータフレームを2つアップロードしました。 – ccamara

答えて

1

より多くのオプションのためのlinked post参照、マージの使用:

# tidy up column name to match with other column names 
colnames(dictionary_df)[2] <- "state_name" 

# merge to get state names 
x <- merge(cities_df, dictionary_df, by = "city_name") 

# merge to get city names 
y <- merge(states_df, dictionary_df, by = "state_name") 

# merge by city and state 
result <- merge(x, y, by = c("state_name", "city_name")) 
result 
#  state_name   city_name city_population city_area state_population 
# 1 Greater London    London   8673713  1572    123 
# 2 Tyne and Wear   Gateshead   120046  NA    456 
# 3 Tyne and Wear Newcastle Upon Tyne   289835  114    456 
関連する問題