Использование SQL-соединения и подзапроса для запроса двух таблиц в R

Я новичок.

У меня есть два TXT-файла, и я использую R с sqldf pakage, чтобы запросить их

Первая таблица (venues.txt) выглядит так:

userID,venueID,year,month,date,hour 1302,47,2012,2,24,11 45,132,2012,2,24,11 24844,86,2012,2,24,11 896,248,2012,2,24,11 5020,29,2012,2,24,11 

Вторая таблица (friends.txt) выглядит так:

 userID,friendID 1,5 1,9 1,50 1,102 1,300 

Я хочу запросить места (siteID), которые посетил пользователь (скажем, userID = 1) с одним или несколькими его друзьями (friendID)

Примечание. Идентификатор userID, friendID друзей может быть связан с идентификатором пользователя в таблице мест

результаты запроса должны выглядеть так:

 venueID friendID 47 5 47 9 29 102 86 102 

Я могу сделать это, используя множество отдельных запросов, а затем присоединить их к таблице, но мой набор данных очень большой. Есть ли более простой способ сделать это?

Я смог запросить все места, которые посетил пользователь или его друзья:

 sqldf("select userID, venueID from data where userID=1 OR userID IN (select friendID from freind where userID=1)") 

Большое спасибо.

Я разработчик Java pl / sql, так что вот мой снимок, чтобы ответить на: «список мест, которые посетили по крайней мере два друга», используя только соединение и предполагая, что данные из venues.txt называются местами, а файл friends.txt – называемого другом в предложении FROM. В принципе, я предполагаю, что эти файлы являются таблицами.

 SELECT v1.venueID, f.friendID FROM venues v1 INNER JOIN friends f ON v1.userID = f.userID INNER JOIN venues v2 ON v2.userID = f.friendID WHERE v1.venueID = v2.venueID 

и если вы хотите добавить дополнительные условия, то есть «по крайней мере, два друга, которых посетили вместе, поэтому имея один и тот же год, месяц, дату, час», просто добавьте их в фильтр (предложение WHERE). Таким образом, запрос будет выглядеть так:

 SELECT v1.venueID, f.friendID FROM venues v1 INNER JOIN friends f ON v1.userID = f.userID INNER JOIN venues v2 ON v2.userID = f.friendID WHERE v1.venueID = v2.venueID v1.year = v2.year v1.month = v2.month v1.date = v2.date v1.hour = v2.hour 

Возможно, вам придется использовать DISTINCT в инструкции SELECT, если на месте встречи (или, при желании, одновременно) есть более двух друзей.