从SQL转换为R(concat和内部联接)

时间:2019-05-29 19:34:22

标签: sql r postgresql

SELECT CONCAT(a.name,' ', a.surname) as "Deluxe drivers", m.producer, m.model
from employer a
INNER JOIN Driver s on s.iddriver=a.idemployer
INNER JOIN Taxi t ON t.idtaxi=s.idtaxi
INNER JOIN Model m ON m.idmodelcar=t.idmodelcar
WHERE m.producer IN ('Audi','Skoda','Honda','Hyundai') AND m.year>2010
GROUP BY a.name, a.surname, m.producer, m.model
ORDER BY 2,3

因此,这几乎是一个基本的SQL查询,但是我需要将其转换为R,并且遇到了一些困难。另外,我不确定是否存在像CONCAT这样的函数,该函数基本上可以将2个不同的列合并为一个,因此名称和姓氏不会分开出现。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

在提问时,您应该以可复制的格式提供数据,这将使我们更容易提供帮助。我将为您提供我认为可以帮助您的功能的指南:

employer$deluxedrivers <- paste(name, surname, sep = ")
%in%
dplyr::group_by()
dplyr::order_by()
dplyr::filter()
merge()

希望这对您有帮助!

此外,如果您想在R中使用SQL,那么还有一个名为sqldf的软件包可以让您做到!

答案 1 :(得分:1)

您只能使用base R中的函数来完成此操作。

paste()函数的作用与CONCAT相同。 merge()函数的作用与JOIN语句相同-您可能会发现在选择行和列之前合并数据帧最容易。 %in%运算符与IN表达式具有相同的作用。

因为您没有使用聚合函数,所以不需要GROUP BY子句。

通过sqldf包,您可以将SQL语句应用于合并的数据帧,这可能会缩短R学习曲线。