我使用以下代码给我一个日期的星期几(格式为dd/mm/yyyy).
编辑:我上传了一个更重要的数据集.
df <- structure(list(Date = c("18/01/2013", "18/01/2013", "18/01/2013",
"18/01/2013", "18/01/2013"), Time = c("07:25:30", "07:25:40",
"07:25:50", "07:26:00", "07:26:10"), Axis1 = c(217L, 320L, 821L,
18L, 40L), Steps = c(6L, 7L, 5L, 1L, 1L), wday = c(7, 7, 7, 7, 7)), .Names = c("Date", "Time", "Axis1", "Steps", "wday"), row.names = 18154:18158, class = "data.frame")
library(lubridate)
df$wday = wday(df$Date)
df$wday.name = wday(df$Date, label = TRUE, abbr = TRUE)
Run Code Online (Sandbox Code Playgroud)
据R报道,18/1是星期五,而不是星期六.
有没有人有任何建议如何纠正这个?
编辑:我试图遵循Dirk给出的建议......
as.POSIXlt(df[,1])$wday
Run Code Online (Sandbox Code Playgroud)
......但这仍然暗示18/1是星期六.
我的时区是GMT/UTC(英国夏令时+ 1),但是因为我只想让R从日期栏中读取(只是d/m/y),我认为我不需要指定它. .
如何将正确的wday列添加到现有的R数据帧中?(如我原来的脚本中所述).我正在努力让建议的编码工作,因为我以错误的格式给出了数据帧 - 道歉.
我正在使用看起来有点像这样的数据集:
Year Date Day_nr Value
1976 19-02-1976 50 167
1976 19-03-1976 79 140
1978 05-03-1978 64 200
1978 05-04-1978 95 200
1999 05-05-1999 125 89
1999 20-06-1999 171 79
Run Code Online (Sandbox Code Playgroud)
然后,我有兴趣根据日数作为ax值估计每年的多项式模型.然后我运行预测函数来估计模型的值.我用天数来做.我的预测数据框的数据看起来有点像这样,每年只有更多的条目
Year Day_nr Value
1976 53 167
1976 80 140
1978 69 300
1978 130 200
1999 140 89
1999 160 79
Run Code Online (Sandbox Code Playgroud)
我现在想做的是从这些日期和年份中获取日期.我以为我可以用lubridate做到这一点,但我只能找到我用来在原始数据文件中首先生成日期数字的相反方向.我无法使用整个日期作为预测因子,因为我需要其他计算的日期编号.
有没有办法轻松做到这一点?
干杯,萨莉娜
我有一长串某个程序的开始日期.规则要求程序最多在6个工作日内完成.我希望计算截止日期.
在R中使用lubridate,我可以获得六天的截止日期
> library(lubridate)
> date.in <- dmy(c("30-8-2001", "12-1-2003", "28-2-2003", "20-5-2004"))
> date.in
[1] "2001-08-30 UTC" "2003-01-12 UTC" "2003-02-28 UTC" "2004-05-20 UTC"
> deadline.using.days <- date.in + days(6)
> deadline.using.days
[1] "2001-09-05 UTC" "2003-01-18 UTC" "2003-03-06 UTC" "2004-05-26 UTC"
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的方法可以增加六个工作日 - 即周六和周日不跳?谢谢.
假设我创建了一个包含日期和时间的变量:
a <- ymd_hms("2014-01-01 12:23:34")
Run Code Online (Sandbox Code Playgroud)
如何创建仅具有日期的另一个变量?也就是说,我应该怎么做才能改变a的价值是相同b的值,其中b是
b <- ymd("2014-01-01")
Run Code Online (Sandbox Code Playgroud) 有没有一种有效的方法来生成带有tidyverse和的时间序列向量lubridate?我知道seq()当一个使用日期数作为间隔时,这两个方法都可以使用。例如,使用输入:
seq(today(), today()+dyears(1), 60)
Run Code Online (Sandbox Code Playgroud)
一个人可以获得间隔60天的一系列日期
"2017-02-14" "2017-04-15" "2017-06-14" "2017-08-13" "2017-10-12" "2017-12-11" "2018-02-09"
Run Code Online (Sandbox Code Playgroud)
然而,有没有什么办法,这可以为工作周,月和年呢?也许与下面的代码类似,我认为可以,但是没有用:
seq(as_date(2000-01-01), as_date(2017-01-01), dyears(1))
Run Code Online (Sandbox Code Playgroud)
错误:持续时间类不兼容(持续时间,数字)。请胁迫
as.duration。
我知道可以更改dyears(1)为365或者30仅需要近似年份或月份,但是我想知道是否存在更聪明的方法来考虑leap年和月份。
为了提供更多上下文,我想生成一个日期向量,以便可以自定义scale_x_datein ggplot。waiver()我不希望显示2000、2003、2006、2009,而是希望该图可以包含所有年份,甚至可能每三个月显示一次。
我有一个类似于以下玩具数据的日期框架:
df <- structure(list(year = c(2014, 2014, 2014, 2014, 2014, 2015, 2015,
2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016), date = structure(c(16229,
16236, 16243, 16250, 16257, 16600, 16607, 16614, 16621, 16628,
16964, 16971, 16978, 16985, 16992), class = "Date"), value = c(0.27,
0.37, 0.57, 0.91, 0.2, 0.9, 0.94, 0.66, 0.63, 0.06, 0.21, 0.18,
0.69, 0.38, 0.77)), .Names = c("year", "date", "value"), row.names = c(NA,
-15L), class = c("tbl_df", "tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)
哪些value是感兴趣的价值,year并且date是不言自明的.如果我想value在不同年份进行视觉比较,那么在不同的年份 …
我觉得这应该是一件容易的事了ggplot,tidyverse,lubridate,但我似乎无法找到一个很好的解决方案.
目标:根据年份和月份创建汇总/汇总/分组数据的条形图.
#Libraries
library(tidyverse)
library(lubridate)
# Data
date <- sample(seq(as_date('2013-06-01'), as_date('2014-5-31'), by="day"), 10000, replace = TRUE)
value <- rnorm(10000)
df <- tibble(date, value)
# Summarise
df2 <- df %>%
mutate(year = year(date), month = month(date)) %>%
unite(year_month,year,month) %>%
group_by(year_month) %>%
summarise(avg = mean(value),
cnt = n())
# Plot
ggplot(df2) +
geom_bar(aes(x=year_month, y = avg), stat = 'identity')
Run Code Online (Sandbox Code Playgroud)
当我创建year_month变量时,它自然变成一个字符变量而不是一个日期变量.我也试过分组,year(date), month(date)但后来我无法弄清楚如何使用两个变量作为x轴ggplot.也许这可以通过将日期安排到本月的第一天来解决......?
我正在使用 Lubridate 包来格式化数据中的日期。
str(base$date)
#> chr [1:38] " 23.09.2020 " " 23.09.2020 " " 17.06.2020 " " 03.06.2020 " ...
base$date <-dmy(base$date)
str(base$date)
#> Date[1:38], format: "2020-09-23" "2020-09-23" "2020-06-17" "2020-06-03" "2020-05-27" ...
Run Code Online (Sandbox Code Playgroud)
由于日期的原始数据采用格式字符,因此我想使用 Lubridate 包的 dmy 函数将其转换为格式日期 (dd/mm/yyyy)。我得到的格式日期为 yyyy/mm/dd。函数 dmy 不是应该给我 dd/mm/yyyy 格式的日期吗,因为 d 代表日,m 代表月,y 代表年?
我有一个数据集,其中人们的完整年龄为 R 中的字符串(例如,“10 年 8 个月 23 天)”,我需要将其转换为有意义的数字变量。我正在考虑将其转换为有多少天人的年龄(这很困难,因为月份有不同的天数)。因此,最好的解决方案可能是创建一个双变量,将年龄显示为 10.6 或 10.8,一些数字变量携带 10 年 8 个月 5 天大于的信息10年7月12天。
这是我当前变量的示例
library(tibble)
age <- tibble(complete_age =
c("10 years 8 months 23 days",
"9 years 11 months 7 days",
"11 years 3 months 1 day",
"8 years 6 months 12 days"))
age
# A tibble: 4 x 1
complete_age
<chr>
1 10 years 8 months 23 days
2 9 years 11 months 7 days
3 11 years 3 months 1 day
4 8 years …Run Code Online (Sandbox Code Playgroud) Looking to do the SQL equivalent of datediff in R?
基本上,我想在 R 中进行这个计算
Delivery Date Expected Date Difference
2022-01-05 2022-01-07 -2
Run Code Online (Sandbox Code Playgroud)