【问题标题】:Translate sql script into tidyverse format将sql脚本翻译成tidyverse格式
【发布时间】:2019-01-18 15:57:51
【问题描述】:

我正在尝试将我以前同事的脚本从 sqldf 重写为 tidyverse。我无法跟随这个块。连接了两个名为“data”和“Stt_nm”的数据框,但我不明白他为什么使用两个选择。也许我在这里遗漏了一些东西。

output = sqldf(
  paste0(
    "select a.date,b.name,sum(a.weigh) as rch
     from (select distinct date,ID,IndID,Station_id,weigh from data) as a
          left join Stt_nm as b on a.Station_id=b.Station
     where a.date between ",
     startdate,
     " and ",
     enddate,
     "
     group by a.date,b.name"
  )
)

【问题讨论】:

  • 括号内的SELECT是从data中检索DISTINCT记录。 LEFT JOIN 用于填充来自Stt_nm 的电台名称。现在这可能不是最好的方法,但这就是正在发生的事情。

标签: r dplyr tidyverse sqldf


【解决方案1】:

如果没有可重复的示例,我无法确定,但我认为应该这样做:

library(tidyverse)
data %>% 
  select(date, ID, IndID, Station_id, weigh) %>% 
  left_join(Stt_nm, by="Station") %>%
  filter(date <= startdate & date >= enddate) %>%
  group_by(date, name) %>%
  summarize(rch = sum(weigh))

【讨论】:

  • FWIW,您可以在过滤器语句中使用between(date, startdate, enddate) 作为替代。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 2013-07-24
  • 1970-01-01
  • 2016-10-28
  • 2010-11-12
  • 2014-08-13
  • 1970-01-01
相关资源
最近更新 更多