小编Kon*_*rad的帖子

dplyr - 聚合不正确?

我有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)

aggregate r dplyr

5
推荐指数
1
解决办法
1112
查看次数

R:制作在Shiny selectInput中可用的唯一值列表

我正在开发一个小型的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 list unique dataframe shiny

5
推荐指数
1
解决办法
3782
查看次数

在Rstudio中的RMarkdown中循环生成pander表

我使用类似下面代码段的代码创建了一组表格:

```{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)

for-loop r rstudio knitr pander

5
推荐指数
1
解决办法
1576
查看次数

应用于带有facet_wrap的箱形图时,删除一个tableGrob

我正在使用下面的代码来丰富一个箱形图,其中包含在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)

charts r ggplot2 boxplot gridextra

5
推荐指数
1
解决办法
1033
查看次数

通过表达式生成时如何在ggplot2中对齐标题和副标题

我正在使用下面的代码生成一个简单的箱线图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)

charts r ggplot2 boxplot plotmath

5
推荐指数
1
解决办法
7407
查看次数

在dmapply(ddR包)中运行聚合函数

我想运行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

5
推荐指数
1
解决办法
53
查看次数

使用类似select的机制为dplyr中的distinct调用选择变量

期望的结果

使用简单的语法我过滤vsam列也留下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)

r lazy-evaluation dplyr nse

5
推荐指数
1
解决办法
114
查看次数

在RMarkdown中使用LaTeX动画包

我想使用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.执行停止

笔记

为什么要引用.根据knitr文件:

当chunk选项fig.show ='animate'并且从代码块产生多个图时,所有图将被组合成动画.对于LaTeX输出,LaTeX包animate用于在PDF中创建动画. 对于HTML/Markdown输出,默认情况下FFmpeg用于创建WebM视频.请注意,在安装FFmpeg时必须启用libvpx支持.Linux和Windows用户只需按照FFmpeg网站上的下载链接(libvpx已在二进制文件中启用).对于OS X用户,您可以通过Homebrew安装FFmpeg

应该用于转换为html.是因为RMarkdown的管道?

在此输入图像描述

(RStudio:RMarkdown) …

pdf animation r knitr r-markdown

5
推荐指数
1
解决办法
546
查看次数

在mutate_at中使用case_when

我想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可以用第二次 …

r dplyr mutate

5
推荐指数
1
解决办法
2061
查看次数

通过每个组的嵌套数据内的交叉应用简单函数

背景

\n\n

给定嵌套数据,我想对across任意选择的列应用一个简单的函数。使用across我想迭代传递给函数一个参数的列的选择,并保持第二个参数不变。

\n\n
\n\n

例子

\n\n
# 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)

nested r dplyr tibble

5
推荐指数
1
解决办法
1256
查看次数