我在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 的调查包不同。我试图使用llply 从plyr包进行列表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) 我希望绘制两个时间序列,并根据当时哪个系列更大来遮蔽系列之间的空间.
这里有两个系列 - 首先是一个数据框,其中包含当时较大系列较大的指标
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界面中打印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)
版画
如果我将图打印为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) 我想在直方图上叠加一个直方图边框,但它们不在正确的位置
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)
返回
如何将边框与直方图对齐?
我试图抓取华盛顿邮报关于警察枪击事件的数据库。由于它不是 html 我不能使用rvest,所以我使用了RSelenium和phantomjs。
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)
检查来源后,很明显我感兴趣的项目具有以下内容id和class
<div id="js-list-690" class="listWrapper cf">
Run Code Online (Sandbox Code Playgroud)
或在 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) 我有一个数据框,其中每个条目都是一些字符串,用逗号分隔.我想用一种简洁的方法来按位置替换每个元素.
这是数据的玩具版本
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,而我需要全部替换它们.
为这样一个基本问题道歉 - 我必须遗漏一些明显的问题.
我想构建一个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) 如何更改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 个观测值。我希望图形的高度能够反映每个点的观察数
两者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)