2017-08-30 3 views
-1

米国のすべての都市で緯度と経度を持つデータセットがあります。 dfに緯度と経度を割り当てたい。しかし、異なる州の複数の都市があります。 LatとLonを正しい都市と州に割り当てるにはどうすればよいですか?R:2つの共通の値を使用して割り当てまたはマージする

Cities <- data.frame(City = c("Sunnyvale", "Sunnyvale","Sunnyvale","Sunnyvale"), 
     State = c("CA","MO", "NC", "TX"), 
     Lat = c(37.36889, 37.05083, 35.73889, 32.79639), 
     Lon = c(-122.03528, -94.495, -82.13611, -96.56056)) 

df <- data.frame(City2 = c("Sunnyvale", "Sunnyvale"), 
      State2 = c("CA", "NC")) 
+1

これは、[タグ:R-FAQ]で重複を[データフレーム(内部、外部、左、右)に参加(マージ)する方法?](https://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner-outer-左 - 右) – Masoud

答えて

0

我々はdplyrleft_joinを使用した '国家' と '都市' の列

library(data.table) 
setDT(df)[Cities, c("Lat", "Lon") := .(Lat, Lon), on = .(City2 = City, State2 = State)] 
df 
#  City2 State2  Lat  Lon 
#1: Sunnyvale  CA 37.36889 -122.03528 
#2: Sunnyvale  NC 35.73889 -82.13611 
+0

答えを[これは(https://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner-outer-left-right)r-faq質問ですか?私はそこにone-liner data.table解決策を見ていない。ありがとう。 – Masoud

+1

@Masoud jangoreckiとbgoldstには、ここでのような正確なユースケースは見つからなかったが、そこには優れた投稿があると思う。おそらく答えの1つを編集してこのケースを追加することができます。私は新しい答えを追加することは確かにそこに答えが非常に包括的 – akrun

0

joinを使用することができます。

> library(dplyr) 
> left_join(df, Cities, by = c("City2" = "City", "State2" = "State")) 
     City2 State2  Lat  Lon 
1 Sunnyvale  CA 37.36889 -122.03528 
2 Sunnyvale  NC 35.73889 -82.13611 
関連する問題