我有dplyr的som问题,group_by函数没有按预期工作.使用汇总,我希望得到输入到group_by语句中的id和year的每个唯一组合的var1的均值.
此代码应创建一个带有id年观察的df,其中我想为每个id和year组合聚合var 1的均值.但是,这不能按预期工作,输出会忽略id,而只会在年份聚合.
df <- data.frame(id=c(1,1,2,2,2,3,3,4,4,5),
year=c(2013,2013,2012,2013,2013,2013,2012,2012,2013,2013),
var1=rnorm(10))
Run Code Online (Sandbox Code Playgroud)
dplyr代码:
dfagg <- df %.%
group_by(id, year) %.%
select(id, year, var1) %.%
summarise(
var1=mean(var1)
)
Run Code Online (Sandbox Code Playgroud)
结果:
> dfagg
Source: local data frame [8 x 2]
Groups: year
year var1
1 2013 0.22924025
2 2012 -0.93073687
3 2013 -0.82351583
4 2012 0.05656113
5 2013 -0.21622021
6 2012 1.91158209
7 2013 -2.67003628
8 2013 -0.72662276
Run Code Online (Sandbox Code Playgroud)
知道发生了什么事吗?
为了确保没有其他包中断dplyr函数,我尝试了以下相同的结果.
dfagg <- df %.%
dplyr::group_by(id, year) %.%
dplyr::select(id, year, var1) %.%
dplyr::summarise(
var1=mean(var1)
)
Run Code Online (Sandbox Code Playgroud) 我正在开发一个小型的Shiny App,该应用程序将提供对一些公开可用的劳动力市场数据的访问权限。我有一个较长格式的相对简单的数据集,类似于以下摘录:
数据
Geography Measure Time Value
ABC Measure A 2010 3
ABC Measure A 2011 4
ABC Measure A 2013 5
ABC Measure B 2010 0.2
ABC Measure B 2011 4
DEF Measure A 2010 4
DEF Measure A 2011 8
DEF Measure A 2012 7
DEF Measure B 2010 8
DEF Measure B 2010 7
Run Code Online (Sandbox Code Playgroud)
我打算生成一个简单的图表,我想使用该selectInput方法为最终用户提供一种方便的方式来过滤表和相应的数据。因此,我希望selectInput包含一个列表,这些列表是从我打算对其应用过滤器的列中派生的唯一值的列表。在“ 测量”列的示例中,我使用以下代码获取唯一值的列表:
## Create list of unique measures
lst.measures <- as.list(unique(dta$Measure))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试ui.R使用以下代码将获得的列表介绍给Shiny时:
# Selection of the …Run Code Online (Sandbox Code Playgroud) 我使用类似下面代码段的代码创建了一组表格:
```{r tables, echo=TRUE, eval=TRUE}
require(reshape2); require(pander)
data("mtcars")
data("AirPassengers")
dta_lst <- list(mtcars, AirPassengers)
for (i in 1:length(dta_lst)) {
pander(melt(head(dta_lst[[i]], n = 2), varnames = c("Something"),
value.name = "Something else"),
caption = paste("Some table for: ", class(dta_lst[[i]])))
}
```
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它会产生所需的输出(当然,提供的示例没有多大意义,在我的正确数据中,我以合理的方式融合数据):
---------------------------
variable Something else
---------- ----------------
mpg 21
mpg 21
cyl 6
cyl 6
disp 160
disp 160
hp 110
hp 110
drat 3.9
drat 3.9
wt 2.62
wt 2.875
qsec 16.46
qsec 17.02
vs 0
vs 0
am 1
am …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的代码来丰富一个箱形图,其中包含在x轴上创建的分类变量的汇总表.
# Libs
require(ggplot2); require(gridExtra); require(grid); require(ggthemes)
# Data
data(mtcars)
# Function to summarise the data
fun_dta_sum <- function(var_sum, group, data) {
sum_dta <- data.frame(
aggregate(var_sum ~ group, FUN = min, data = data),
aggregate(var_sum ~ group, FUN = max, data = data),
aggregate(var_sum ~ group, FUN = mean, data = data))
sum_dta <- sum_dta[,c(1,2,4,6)]
colnames(sum_dta) <- c("Group (x axis)", "min", "max", "mean")
rownames(sum_dta) <- NULL
sum_dta[,-1] <-round(sum_dta[,-1],1)
return(sum_dta)
}
# Graph
ggplot(data = mtcars, aes(x = cyl, y = …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的代码生成一个简单的箱线图ggplot2:
# Libs data
data("mtcars"); require(ggplot2); require(ggthemes)
# Chart
ggplot(data = mtcars) +
geom_boxplot(aes(y = wt, x = as.factor(am)),
fill = "gray87") +
xlab("AM") +
ylab("WT") +
theme_gdocs() +
ggtitle("WT by AM") +
theme(axis.title.y = element_text(angle = 90),
axis.ticks = element_line(colour = "black", linetype = "solid",
size = 0.5),
panel.grid = element_line(colour = "gray"))
Run Code Online (Sandbox Code Playgroud)
我想为我的图表添加一个副标题,并对它的呈现方式进行一些控制。我正在关注此讨论并使用代码:
# Chart
ggplot(data = mtcars) +
geom_boxplot(aes(y = wt, x = as.factor(am)),
fill = "gray87") +
xlab("AM") +
ylab("WT") …Run Code Online (Sandbox Code Playgroud) 我想运行aggregate函数中的dmapply通过所提供的功能ddR包.
期望的结果反映了通过aggregatebase 生成的简单输出:
aggregate(
x = mtcars$mpg,
FUN = function(x) {
mean(x, na.rm = TRUE)
},
by = list(trans = mtcars$am)
)
Run Code Online (Sandbox Code Playgroud)
产生:
trans x
1 0 17.14737
2 1 24.39231
Run Code Online (Sandbox Code Playgroud)
ddmapply我希望在使用时得到相同的结果ddmapply,如下所示:
# ddR
require(ddR)
# ddR object creation
distMtcars <- as.dframe(mtcars)
# Aggregate / ddmapply
dmapply(
FUN = function(x, y) {
aggregate(FUN = mean(x, na.rm = TRUE),
x = x,
by = list(trans …Run Code Online (Sandbox Code Playgroud) parallel-processing aggregate r distributed-computing dataframe
使用简单的语法我过滤vs和am列也留下cyl值.
data(mtcars)
dta <- mtcars[,c("vs", "am", "cyl")]
# Desired results
dta %>% distinct(vs, am, .keep_all = TRUE)
Run Code Online (Sandbox Code Playgroud)
我想颠倒上面的语法,并对除cyl列之外的所有值选择不同的观察,对应于下面的示例:
dta %>% distinct(vars(-contains("cyl")), .keep_all = TRUE)
Run Code Online (Sandbox Code Playgroud)
这自然不起作用:
>> dta %>% distinct(vars(-contains("cyl")), .keep_all = TRUE)
vs am cyl vars(-contains("cyl"))
1 0 1 6 ~-contains("cyl")
2 0 1 6 ~-contains("cyl")
3 1 1 4 ~-contains("cyl")
4 1 0 6 ~-contains("cyl")
5 0 0 8 ~-contains("cyl")
6 1 0 6 ~-contains("cyl") …Run Code Online (Sandbox Code Playgroud) 我想使用LaTeX 动画包生成PDF格式的动画图形.
---
title: "test_animations"
author: "Colours"
date: "27/10/2017"
output:
pdf_document:
includes:
in_header: header_ani.tex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
pacman::p_load(gganimate, gapminder, ggplot2)
```
## Test animations
```{r sample_ani, fig.show='animate', message=FALSE, warning=FALSE}
p2 <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop)) +
geom_point() +
geom_point(aes(frame = year), color = "red") +
scale_x_log10()
gganimate(p2, saver = "gif")
```
Run Code Online (Sandbox Code Playgroud)
header_ani.tex\usepackage{animate}
Run Code Online (Sandbox Code Playgroud)
警告:忽略未知的美学:框架
从第20-25行退出(second_animation.Rmd)错误:找不到ffmpeg命令.您应该更改animation.fun挂钩选项或安装启用了libvpx的ffmpeg.执行停止
当chunk选项fig.show ='animate'并且从代码块产生多个图时,所有图将被组合成动画.对于LaTeX输出,LaTeX包animate用于在PDF中创建动画. 对于HTML/Markdown输出,默认情况下FFmpeg用于创建WebM视频.请注意,在安装FFmpeg时必须启用libvpx支持.Linux和Windows用户只需按照FFmpeg网站上的下载链接(libvpx已在二进制文件中启用).对于OS X用户,您可以通过Homebrew安装FFmpeg
ffmpeg 应该用于转换为html.是因为RMarkdown的管道?
我想case_when在内部使用mutate_at,如下例所示:
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(case_when(
. %in% c(1,0,9) ~ TRUE
. %in% c(2,20,200) ~ FALSE
TRUE ~ as.character(.)
)))
Run Code Online (Sandbox Code Playgroud)
. =在funs()通话中使用的替代版本也不起作用.
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(. = case_when(
. %in% c(1, 0, 9) ~ TRUE
. %in% c(2, 20, 200) ~ FALSE
TRUE ~ as.character(.)
)))
Run Code Online (Sandbox Code Playgroud)
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(ifelse(. %in% c(1, 0, 9), TRUE, FALSE)))
Run Code Online (Sandbox Code Playgroud)
FALSE可以用第二次 …
给定嵌套数据,我想对across任意选择的列应用一个简单的函数。使用across我想迭代传递给函数一个参数的列的选择,并保持第二个参数不变。
# Using across within nested data frame\n\n# Gapminder data from gapminder package\nlibrary("tidyverse")\ndata("gapminder", package = "gapminder")\n\n# Sample function\nsample_function <- function(.data, var_a, var_b) {\n var_a <- enquo(var_a)\n var_b <- enquo(var_b)\n .data %>%\n mutate(some_res = log(!!var_a) + !!var_b) %>%\n pull(some_res)\n}\n\n\n# Basic example, not working\ngapminder %>%\n group_by(country, continent) %>%\n nest() %>%\n mutate(sample_res = map(\n .x = data,\n .f = across(\n .cols = vars(year, lifeExp, pop),\n .fns = ~ sample_function(var_a = .x),\n …Run Code Online (Sandbox Code Playgroud)