小编tom*_*omw的帖子

无法使用as.Date格式化月份

我在as.Date的"格式"部分遗漏了一些明显的东西.考虑这个例子

d1 <- data.frame(d = c("1/Jan/1947", "1/Feb/1947", "1/Mar/1947"), d2 = c("Jan/1947", "Feb/1947", "Mar/1947"))

d1$date1 <- as.Date(x=d1$d, format="%d/%b/%Y")
d1$date2 <- as.Date(x=d1$d2, format="%b/%Y")

           d       d2      date1 date2
1 1/Jan/1947 Jan/1947 1947-01-01  <NA>
2 1/Feb/1947 Feb/1947 1947-02-01  <NA>
3 1/Mar/1947 Mar/1947 1947-03-01  <NA>
Run Code Online (Sandbox Code Playgroud)

所以我的问题很简单 - 我不明白为什么date1有效但date2没有.

r date

6
推荐指数
2
解决办法
9341
查看次数

在 plyr 调用中使用 svyglm

这显然与 R 的调查包不同。我试图使用llplyplyr包进行列表svyglm模式。下面是一个例子:

library(survey)
library(plyr)

foo <- data.frame(y1 = rbinom(50, size = 1, prob=.25),
                  y2 = rbinom(50, size = 1, prob=.5),
                  y3 = rbinom(50, size = 1, prob=.75),
                  x1 = rnorm(50, 0, 2),
                  x2 = rnorm(50, 0, 2),
                  x3 = rnorm(50, 0, 2),
                  weights = runif(50, .5, 1.5))
Run Code Online (Sandbox Code Playgroud)

我的因变量列号列表

dvnum <- 1:3
Run Code Online (Sandbox Code Playgroud)

表示此样本中没有聚类或分层

wd <- svydesign(ids= ~0, strata= NULL, weights= ~weights, data = foo)
Run Code Online (Sandbox Code Playgroud)

单个 svyglm 调用有效

svyglm(y1 ~ x1 + x2 …
Run Code Online (Sandbox Code Playgroud)

r plyr

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

geom_ribbon中可能存在的错误

我希望绘制两个时间序列,并根据当时哪个系列更大来遮蔽系列之间的空间.

这里有两个系列 - 首先是一个数据框,其中包含当时较大系列较大的指标

d1 <- read.csv("https://dl.dropbox.com/s/0txm3f70msd3nm6/ribbon%20data.csv?dl=1")
Run Code Online (Sandbox Code Playgroud)

这是融化的系列.

d2 <- read.csv("https://dl.dropbox.com/s/6ohwmtkhpsutpig/melted%20ribbon%20data.csv?dl=1")
Run Code Online (Sandbox Code Playgroud)

我的情节......

ggplot() + geom_line(data = d2,
                 aes(x = time, y = value, group = variable, color = variable)) +
         geom_hline(yintercept = 0, linetype = 2) +
         geom_ribbon(data = d1[d1$big == "B",],
                     aes(x = time, ymin = csa, 
                         ymax =  csb),
                         alpha  = .25,
                         fill = "#9999CC") +
         geom_ribbon(data = d1[d1$big == "A",],
                     aes(x = time, ymin = csb, 
                         ymax =  csa),
                     alpha  = .25,
                     fill = "#CC6666") +
         scale_color_manual(values …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

在ggplot中使用unicode符号

当我在R界面中打印ggplot时,某些unicode符号有效,而当我将它们打印为pdf时,其他符号可以正常工作.我想了解这个过程.例如:

library(tidyverse)
library(magrittr)
library(showtext)

d1 <- data.frame(
  yvar = letters[1:3] %>% 
    rep(each = 4),
  xvar = LETTERS[1:4] %>% 
    rep(times = 3),
  ev = sample(1:4, size = 12, replace = T)
   ) %>%
  tbl_df %>% 
  modify(factor)

p1 <- d1 %>% 
  ggplot(
    aes(xvar, yvar, shape = ev)
  ) +
  geom_point(size = 8)  +
  scale_shape_manual(values=c("\u25BA","\u25D0","\u25BC","\u25B2"))

p1
Run Code Online (Sandbox Code Playgroud)

版画

r_session_figure

如果我将图打印为pdf,在启用Open Sans字体后,我会看到这一点

在此输入图像描述

showtext.auto()
ggsave(
  "plot 1.pdf", 
  p1,
  width = 4,
  height = 2
  )
Run Code Online (Sandbox Code Playgroud)

如何启用最大数量的unicode符号ggplot2

(编辑:我的系统信息)

R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running …
Run Code Online (Sandbox Code Playgroud)

unicode r ggplot2

5
推荐指数
0
解决办法
416
查看次数

在ggplot中叠加直方图和直方图边框

我想在直方图上叠加一个直方图边框,但它们不在正确的位置

library(tidyverse)
data("iris")

iris %>% 
  ggplot(
    aes(Sepal.Length)
  ) +
  geom_histogram(
    alpha = .5
  ) +
  stat_bin(geom="step") +
  facet_wrap(
    ~Species, ncol = 1
  )
Run Code Online (Sandbox Code Playgroud)

返回

在此处输入图片说明

如何将边框与直方图对齐?

r ggplot2

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

使用 RSelenium 在 R 中抓取 Javascript

我试图抓取华盛顿邮报关于警察枪击事件的数据库。由于它不是 html 我不能使用rvest,所以我使用了RSeleniumphantomjs

library(RSelenium)

checkForServer()
startServer()

eCap <- list(phantomjs.binary.path = "C:/Program Files/Chrome Driver/phantomjs.exe")
remDr <- remoteDriver(browserName = "phantomjs", extraCapabilities = eCap)

remDr$open()

remDr$navigate("http://www.washingtonpost.com/graphics/national/police-shootings/")
Run Code Online (Sandbox Code Playgroud)

检查来源后,很明显我感兴趣的项目具有以下内容idclass

<div id="js-list-690" class="listWrapper cf">
Run Code Online (Sandbox Code Playgroud)

或在 Chrome 中:

Chrome 中相关项目来源的屏幕截图

我可以访问单个项目的文本:

remDr$findElement("css", "#js-list-691")$getElementText()
Run Code Online (Sandbox Code Playgroud)

返回

[[1]]
[1] "An unidentified person, a 47-year-old Hispanic man, was shocked with a stun gun and shot on July 30, 2015, in Whittier, Calif. Los Angeles County deputies were investigating a domestic disturbance when …
Run Code Online (Sandbox Code Playgroud)

selenium r web-scraping selenium-webdriver rselenium

4
推荐指数
1
解决办法
2228
查看次数

str_replace_all by position,应用于矢量

我有一个数据框,其中每个条目都是一些字符串,用逗号分隔.我想用一种简洁的方法来按位置替换每个元素.

这是数据的玩具版本

 library(tidyverse)

d1 <- tibble(
  r1 = c("lab1",
         "lab2,lab3",
         NA,
         "lab3,lab4"),
  r2 = c(NA,
         "lab1",
         "lab2",
         "lab2,lab3")
  ) 
Run Code Online (Sandbox Code Playgroud)

所以lab我想要的每个元素都由相应的rep元素重新替换.

d1 %>% 
  modify_at(1:2,
        ~ str_replace_all(.,
                          c("lab1", "lab2", "lab3", "lab4"),
                          c("rep1", "rep2", "rep3", "rep4")))
Run Code Online (Sandbox Code Playgroud)

返回

# A tibble: 4 x 2
         r1        r2
      <chr>     <chr>
1      rep1      <NA>
2 rep2,lab3      lab1
3      <NA>      lab2
4 lab3,rep4 lab2,lab3
Run Code Online (Sandbox Code Playgroud)

所以我每个单元只进行一次替换r1,而我需要全部替换它们.

r stringr purrr tidyverse

4
推荐指数
1
解决办法
401
查看次数

列出lm对象,保留他们的类

为这样一个基本问题道歉 - 我必须遗漏一些明显的问题.

我想构建一个lm对象列表,然后我将在llply调用中使用它来对此列表执行中介分析.但这并不重要 - 我首先想要制作一个长度为m的列表(其中m是模型集),m中的每个元素本身都包含n个lm对象.

所以在这个简单的例子中

d1 <- data.frame(x1 = runif(100, 0, 1),
             x2 = runif(100, 0, 1),
             x3 = runif(100, 0, 1),
             y1 = runif(100, 0, 1),
             y2 = runif(100, 0, 1),
             y3 = runif(100, 0, 1))

m1 <- lm(y1 ~ x1 + x2 + x3, data = d1)
m2 <- lm(x1 ~ x2 + x3, data = d1)
m3 <- lm(y2 ~ x1 + x2 + x3, data = d1)
m4 …
Run Code Online (Sandbox Code Playgroud)

r plyr

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

ggridges 的高度按计数缩放

如何更改ggridges图形的缩放比例,使绘图更像直方图,而不像核密度图?也就是说,我希望该图能够反映分类变量的不同大小。

例如

library(tidyverse)
library(ggridges)

data(mpg)    

mpg %>% 
  mutate(
    drv = drv %>% 
      fct_reorder(
        cty
        )
    ) %>% 
  ggplot(
    aes(cty, drv)
    ) +
  geom_density_ridges(
    stat = "binline", 
    scale = .8
    )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里的问题是 的r类别mpg$drv只有 25 个观测值,而 和 的类别 f各有4超过 100 个观测值。我希望图形的高度能够反映每个点的观察数

r ggplot2 ggridges

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

purrr::map 变体返回长 data.frame

两者purrr::map_dfr兼而purrr::map_dfc归一广data.frame

library(tidyverse)

mtcars %>% 
  map_dfr(~is.na(.) %>% mean)

mtcars %>% 
  map_dfc(~is.na(.) %>% mean)
Run Code Online (Sandbox Code Playgroud)

都返回

# A tibble: 1 x 11
    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1     0     0     0     0     0     0     0     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

我可以用一个 tidyr::gather

mtcars %>% 
  map_dfr(~is.na(.) %>% mean) %>% 
  gather
Run Code Online (Sandbox Code Playgroud)

返回

# A tibble: 11 x 2
   key   value
   <chr> <dbl>
 1 …
Run Code Online (Sandbox Code Playgroud)

r tidyr purrr

2
推荐指数
1
解决办法
416
查看次数