小编hrb*_*str的帖子

与group_by()一起使用时,dplyr:lead()和lag()错误

我想在每个组中找到lead()和lag()元素,但是有一些错误的结果.

例如,数据是这样的:

library(dplyr)
df = data.frame(name=rep(c('Al','Jen'),3),
                score=rep(c(100, 80, 60),2))
df
Run Code Online (Sandbox Code Playgroud)

数据:

  name score
1   Al   100
2  Jen    80
3   Al    60
4  Jen   100
5   Al    80
6  Jen    60
Run Code Online (Sandbox Code Playgroud)

现在我试着找出每个人的lead()和lag()得分.如果我使用arrange()对其进行排序,我可以得到正确的答案:

df %>%
  arrange(name) %>%
  group_by(name) %>%
  mutate(next.score = lead(score),
         before.score = lag(score) )
Run Code Online (Sandbox Code Playgroud)

OUTPUT1:

Source: local data frame [6 x 4]
Groups: name

      name score next.score before.score
    1   Al   100         60           NA
    2   Al    60         80          100
    3   Al    80         NA           60
    4  Jen    80        100           NA
    5 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

36
推荐指数
3
解决办法
3万
查看次数

dplyr的filter_中的非标准评估(NSE)和从MySQL中提取数据

我想从带有动态过滤器的sql server中提取一些数据.我正在以下列方式使用伟大的R包dplyr:

#Create the filter
filter_criteria = ~ column1 %in% some_vector
#Connect to the database
connection <- src_mysql(dbname <- "mydbname", 
             user <- "myusername", 
             password <- "mypwd", 
             host <- "myhost") 
#Get data
data <- connection %>%
 tbl("mytable") %>% #Specify which table
 filter_(.dots = filter_criteria) %>% #non standard evaluation filter
 collect() #Pull data
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常但现在我想以某种方式在我的表的所有列上循环它,因此我想将过滤器编写为:

#Dynamic filter
i <- 2 #With a loop on this i for instance
which_column <- paste0("column",i)
filter_criteria <- ~ which_column %in% some_vector
Run Code Online (Sandbox Code Playgroud)

然后使用更新的过滤器重新应用第一个代码.

不幸的是,这种方法没有给出预期的结果.实际上它没有给出任何错误,但是甚至没有将任何结果拉入R.特别是,我看了两个代码生成的SQL查询,并且有一个重要的区别.

第一个工作代码生成表单的查询:

SELECT ... FROM …
Run Code Online (Sandbox Code Playgroud)

r lazy-evaluation dplyr

31
推荐指数
3
解决办法
1万
查看次数

ggplot geom_smooth lm中带宽的含义

使用以下代码:

library(ggplot2)
ggplot(mtcars, aes(x=wt, y=mpg)) +
    geom_point(aes(colour=factor(cyl))) +
    geom_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

我可以得到这个情节:

在此输入图像描述

我的问题是灰色区域是如何定义的?这是什么意思.我怎样才能使用控制该频段宽度的各种参数?

r ggplot2

25
推荐指数
2
解决办法
3万
查看次数

在RStudio中使用Knit PDF时,如何更改纸张尺寸?

默认情况下,Knit PDF创建的PDF文档是美国字母大小.相反,我想创建A4尺寸的文件.我觉得这应该很容易改变,无论是在RStudio GUI中还是在Rmd文件顶部的元数据中添加一个选项.不幸的是我找不到任何说明如何做到这一点.有没有办法指定纸张大小,最好是在Rmd文件本身内?我仍在使用RStudio版本0.98.953,但如果有帮助可以升级.

如果有人能指出我正确的方向,我将不胜感激.

pdf r rstudio knitr r-markdown

23
推荐指数
2
解决办法
8392
查看次数

用编织器将图表彼此对齐

我一直在使用knitr几天,这太棒了!:)

目前,我正努力在输出文件(PDF)中将两个图拼接在一起.根据我的理解,这应该通过out.width='.4\\linewidth'在块选项中设置或类似的东西来实现.

由此产生的图很小,2很容易彼此相邻,但不知何故,所有图都放在彼此之下.

我也很难将latex-tables(xtable-output和results='asis'-option)对齐到文档的左侧.在旁边写它会很棒.

latex r knitr

22
推荐指数
1
解决办法
6323
查看次数

如何确定日期是否是周末(不使用lubridate)

我有一个日期对象(yyyy-mm-dd)的向量,我想确定它们是否在周末.是否有能够直接确定这一功能的功能?

我可以wday()lubridate包中使用,然后确定返回的值是否,01或者07其他更直接的东西?

x <- seq(Sys.Date()-10, Sys.Date(), by = 1)
x[lubridate::wday(x) %in% c(1, 7)]
Run Code Online (Sandbox Code Playgroud)

datetime r lubridate

19
推荐指数
5
解决办法
2万
查看次数

检查数据框是否存在

在数据帧名称为字符串的情况下,检查数据帧是否存在的首选方法是什么?我能想到:

df_name <- 'iris'

# Option 1
tryCatch(is.data.frame(get(df_name)), error=function(cond) FALSE)

# Option 2
if (exists(df_name)) is.data.frame(get(df_name)) else FALSE
Run Code Online (Sandbox Code Playgroud)

r dataframe

18
推荐指数
1
解决办法
3万
查看次数

ggplot2:geom_text()与facet_grid()?

我只想为ggplot2生成的每个数字面板添加注释; 每个角落都有简单的标签,如(a),(b),(c)等.有一个简单的方法吗?

plot r ggplot2

17
推荐指数
2
解决办法
2万
查看次数

使用jsonlite包解析JSON文件时出错

我正在尝试将JSON文件读入R但我收到此错误:

Error in parseJSON(txt) : parse error: trailing garbage
      [ 33.816101, -117.979401 ] } { "a": "Mozilla\/4.0 (compatibl
                 (right here) ------^
Run Code Online (Sandbox Code Playgroud)

我从http://1usagov.measuredvoice.com/下载了该文件并使用7zip解压缩,然后我在R中使用了以下代码:

library(jsonlite)
jsonData <- fromJSON("usagov_bitly_data2013-05-17-1368832207")
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会出现这种错误,我在Google上查了一下,但没有任何信息,有人可以帮我吗?这是文件问题还是我的代码?

json r jsonlite

17
推荐指数
2
解决办法
2万
查看次数

在dplyr中使用%>%运算符而不在R中加载dplyr

我正在构建一个包,我想知道是否有办法%>%从dplyr 调用操作符而不实际附加dplyr包.例如,对于从包中导出的任何函数,可以使用双冒号(::)调用它.因此,如果我想在group_by不附加dplyr的情况下使用该功能,我会输入dplyr::group_by.运营商有类似的东西吗?

r operators dplyr

17
推荐指数
2
解决办法
2409
查看次数