我想在每个组中找到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) 我想从带有动态过滤器的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) 使用以下代码:
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)
我可以得到这个情节:

我的问题是灰色区域是如何定义的?这是什么意思.我怎样才能使用控制该频段宽度的各种参数?
默认情况下,Knit PDF创建的PDF文档是美国字母大小.相反,我想创建A4尺寸的文件.我觉得这应该很容易改变,无论是在RStudio GUI中还是在Rmd文件顶部的元数据中添加一个选项.不幸的是我找不到任何说明如何做到这一点.有没有办法指定纸张大小,最好是在Rmd文件本身内?我仍在使用RStudio版本0.98.953,但如果有帮助可以升级.
如果有人能指出我正确的方向,我将不胜感激.
我一直在使用knitr几天,这太棒了!:)
目前,我正努力在输出文件(PDF)中将两个图拼接在一起.根据我的理解,这应该通过out.width='.4\\linewidth'在块选项中设置或类似的东西来实现.
由此产生的图很小,2很容易彼此相邻,但不知何故,所有图都放在彼此之下.
我也很难将latex-tables(xtable-output和results='asis'-option)对齐到文档的左侧.在旁边写它会很棒.
我有一个日期对象(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) 在数据帧名称为字符串的情况下,检查数据帧是否存在的首选方法是什么?我能想到:
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) 我只想为ggplot2生成的每个数字面板添加注释; 每个角落都有简单的标签,如(a),(b),(c)等.有一个简单的方法吗?
我正在尝试将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上查了一下,但没有任何信息,有人可以帮我吗?这是文件问题还是我的代码?
我正在构建一个包,我想知道是否有办法%>%从dplyr 调用操作符而不实际附加dplyr包.例如,对于从包中导出的任何函数,可以使用双冒号(::)调用它.因此,如果我想在group_by不附加dplyr的情况下使用该功能,我会输入dplyr::group_by.运营商有类似的东西吗?