我試圖用一個(for?)回圈來自動匹配兩個資料框。
>/span> df_key
country_election keyword1 keyword2 keyword3 keyword4 keyword5
1 France Paris Rome Madrid London Marseille
2 西班牙 Valencia Berlin Manchester Zurich Milan
>/span> df_country
城市 國家
1 巴黎 法國
2 意大利羅馬
3 西班牙馬德里
4 英國倫敦
5 法國馬賽市
6 瓦倫西亞 西班牙
7 德國柏林
8 曼徹斯特 英國
9 瑞士蘇黎世
10 意大利米蘭
在這個例子中,我想把df_key中的每個關鍵詞都與df_country相匹配,以增加國家列。
country_election keyword1 country_1 keyword2 country_2 keyword3 country_3
1 法國 巴黎 法國 羅馬 意大利 馬德里 西班牙
2 西班牙 巴倫西亞 西班牙 柏林 德國 曼徹斯特 英國
最后,我還希望有一系列的虛擬變數來檢查country_i是否與country_election相等。非常感謝你的幫助。
df_key < -結構(list(country_election = c("France"/span>, "西班牙")。 keyword1 = c("巴黎"。 "Valencia"),
keyword2 = c("羅馬"。 "Berlin")。 keyword3 = c("馬德里"。 "Manchester")。 keyword4 = c("London"/span>, "蘇黎世"),
keyword5 = c("Marseille"。 "米蘭"))。 class = "data. frame",行。 names = c(NA。 -2L))
df_country < -結構(list(city= c("Paris"/span>, "羅馬"。 "馬德里", "倫敦"。 "馬賽", "瓦倫西亞","柏林", "曼徹斯特"。 "蘇黎世", "米蘭")。 國家 = c("France"。 "意大利", "西班牙"。 "United Kingdom", "United Kingdom",
"法國", "西班牙"。 "德國", "英國"。 "瑞士"。 "意大利")),
class = "data.frame", 行。 names = c(NA。 -10L))
uj5u.com熱心網友回復:
你可以匹配城市名稱,提取國家并創建新列。如果列的順序很重要,可以從中提取數字部分,并排序資料。
cols < - sub('keyword', 'country', names(df_key[-) 1]))
df_key[cols] < -df_country$country[match(as. 矩陣(df_key[-1])。 df_country$city)]
df_key[order(as. numeric(sub('D '/span>。 ''。 names(df_key)))。 na. last = FALSE)】
# country_election keyword1 country1 keyword2 country2 keyword3
#1 France Paris France Rome Italy Madrid
#2 西班牙 瓦倫西亞 西班牙 柏林 德國 曼徹斯特 #2 西班牙 瓦倫西亞 西班牙 曼徹斯特
# country3 keyword4 country4 keyword5 country5
#1 Spain London United Kingdom Marseille France
#2 英國 蘇黎世 瑞士 米蘭 意大利
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/312048.html
標籤:
上一篇:在檔案名中添加相對豐度
