我正在做一些非常简单的事情。给定特定期间的开始日期和结束日期的数据框,我想为按周分箱的每个期间扩展/创建完整序列(每行的因子),然后将其输出到单个大数据框中。
例如:
library(tidyverse)
library(lubridate)
# Dataset
start_dates = ymd_hms(c("2019-05-08 00:00:00",
"2020-01-17 00:00:00",
"2020-03-03 00:00:00",
"2020-05-28 00:00:00",
"2020-12-10 00:00:00",
"2021-05-07 00:00:00",
"2022-01-04 00:00:00"), tz = "UTC")
end_dates = ymd_hms(c( "2019-10-24 00:00:00",
"2020-03-03 00:00:00",
"2020-05-28 00:00:00",
"2020-12-10 00:00:00",
"2021-05-07 00:00:00",
"2022-01-04 00:00:00",
"2022-01-19 00:00:00"), tz = "UTC")
df1 = data.frame(studying = paste0("period",seq(1:7),sep = ""),start_dates,end_dates)
Run Code Online (Sandbox Code Playgroud)
有人建议我使用 do(),它目前工作正常,但当事情被取代时我讨厌它。我也有一种使用map2的方法。但是阅读文件(https://dplyr.tidyverse.org/reference/do.html)建议您可以使用nest_by()、cross()和summarise()来完成与do()相同的工作,我会怎么做关于得到相同的结果?我尝试了很多东西,但我似乎无法得到它。
# do() way to do it
df1 %>%
group_by(studying) %>%
do(data.frame(week=seq(.$start_dates,.$end_dates,by="1 week")))
Run Code Online (Sandbox Code Playgroud)
# transmute() way to do it
df1 %>%
transmute(weeks = map2(start_dates,end_dates, seq, …Run Code Online (Sandbox Code Playgroud) 我确信有一个简单的解决方案,但我环顾四周却找不到任何东西。
本质上,我只想y-axis水平翻转标题,然后将其沿y-axis. 我已经设法翻转它,但我似乎找不到将其沿轴居中的参数。
这是一个可重现的示例:
require(tidyverse)
iris %>% ggplot() + geom_point(aes(x = Sepal.Length, y = Sepal.Width)) +
theme(axis.title.y = element_text(angle=0))
Run Code Online (Sandbox Code Playgroud)
先谢谢了!
我正在尝试使用cowplot包的draw_image()功能。我已经设法在图表中获取图像作为示例。
我无法弄清楚 xy 位置是如何工作的,我必须不断输入随机数,直到看到图像。
require(ggplot2) #required packages
require(cowplot)
require(magick)
p1 <- qplot(Sepal.Length, Sepal.Width, data = iris)
ggdraw(p1) +
draw_image(
"https://upload.wikimedia.org/wikipedia/en/7/77/EricCartman.png",
y = 0.2,
scale = 0.5
)
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议他们的运作规模如何?它看起来确实与图表的比例不同。