如何将日期格式重组为另一种格式以获得新列

发布于 2025-01-12 08:54:01 字数 1092 浏览 5 评论 0原文

我有这样的数据集,

DT=structure(list(date = c("01.01.2021", "01.01.2021", "01.01.2021", 
"01.01.2021", "01.01.2021", "01.01.2021", "01.01.2021", "01.01.2021", 
"01.01.2021", "01.01.2021", "01.01.2021", "01.02.2021", "01.02.2021", 
"01.02.2021", "01.02.2021", "01.02.2021", "01.02.2021", "01.02.2021", 
"01.02.2021", "01.02.2021"), sales_count = c(10L, 4L, 8L, 6L, 
4L, 4L, 4L, 3L, 1L, 5L, 2L, 10L, 5L, 9L, 2L, 8L, 5L, 6L, 8L, 
3L)), class = "data.frame", row.names = c(NA, -20L))

它看起来像这样

         date sales_count
1  01.01.2021          10
2  01.01.2021           4
3  01.01.2021           8
4  01.01.2021           6

我怎样才能重新制作数据集,使其具有完全相同的输入格式

      sales_count    date_time       date   week_num weekday
   1: 1        2016-05-02 00:00:00 2016-05-02  1     Monday
   2: 10       2016-05-02 00:00:00 2016-05-02  1     Monday
   3: 14       2016-05-02 00:00:00 2016-05-02  1     Monday
   4: 15       2016-05-02 00:00:00 2016-05-02  1     Monday
   5: 20       2016-05-02 00:00:00 2016-05-02  1     Monday

I have such dataset

DT=structure(list(date = c("01.01.2021", "01.01.2021", "01.01.2021", 
"01.01.2021", "01.01.2021", "01.01.2021", "01.01.2021", "01.01.2021", 
"01.01.2021", "01.01.2021", "01.01.2021", "01.02.2021", "01.02.2021", 
"01.02.2021", "01.02.2021", "01.02.2021", "01.02.2021", "01.02.2021", 
"01.02.2021", "01.02.2021"), sales_count = c(10L, 4L, 8L, 6L, 
4L, 4L, 4L, 3L, 1L, 5L, 2L, 10L, 5L, 9L, 2L, 8L, 5L, 6L, 8L, 
3L)), class = "data.frame", row.names = c(NA, -20L))

it looks something like this

         date sales_count
1  01.01.2021          10
2  01.01.2021           4
3  01.01.2021           8
4  01.01.2021           6

How can I remake the dataset so that it has exactly this input format

      sales_count    date_time       date   week_num weekday
   1: 1        2016-05-02 00:00:00 2016-05-02  1     Monday
   2: 10       2016-05-02 00:00:00 2016-05-02  1     Monday
   3: 14       2016-05-02 00:00:00 2016-05-02  1     Monday
   4: 15       2016-05-02 00:00:00 2016-05-02  1     Monday
   5: 20       2016-05-02 00:00:00 2016-05-02  1     Monday

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丢了幸福的猪 2025-01-19 08:54:01

使用lubridate。我不确定您期望的预期输出中的日期与原始数据框相比是否不同。

library(lubridate)

tibble(DT) %>% 
  mutate(date = mdy(date),
         date_time = ymd_hms(format(date, "%Y-%m-%d 00:00:00")),
         week_num = week(date),
         weekday = weekdays(date)) %>% 
  select(sales_count, date_time, date, week_num, weekday)

# A tibble: 20 x 5
   sales_count date_time           date       week_num weekday 
         <int> <dttm>              <date>        <dbl> <chr>   
 1          10 2021-01-01 00:00:00 2021-01-01        1 Friday  
 2           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 3           8 2021-01-01 00:00:00 2021-01-01        1 Friday  
 4           6 2021-01-01 00:00:00 2021-01-01        1 Friday  
 5           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 6           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 7           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 8           3 2021-01-01 00:00:00 2021-01-01        1 Friday  
 9           1 2021-01-01 00:00:00 2021-01-01        1 Friday  
10           5 2021-01-01 00:00:00 2021-01-01        1 Friday  
11           2 2021-01-01 00:00:00 2021-01-01        1 Friday  
12          10 2021-01-02 00:00:00 2021-01-02        1 Saturday
13           5 2021-01-02 00:00:00 2021-01-02        1 Saturday
14           9 2021-01-02 00:00:00 2021-01-02        1 Saturday
15           2 2021-01-02 00:00:00 2021-01-02        1 Saturday
16           8 2021-01-02 00:00:00 2021-01-02        1 Saturday
17           5 2021-01-02 00:00:00 2021-01-02        1 Saturday
18           6 2021-01-02 00:00:00 2021-01-02        1 Saturday
19           8 2021-01-02 00:00:00 2021-01-02        1 Saturday
20           3 2021-01-02 00:00:00 2021-01-02        1 Saturday

Using lubridate. I'm not sure you expect different dates in your expected output compared to your original dataframe.

library(lubridate)

tibble(DT) %>% 
  mutate(date = mdy(date),
         date_time = ymd_hms(format(date, "%Y-%m-%d 00:00:00")),
         week_num = week(date),
         weekday = weekdays(date)) %>% 
  select(sales_count, date_time, date, week_num, weekday)

# A tibble: 20 x 5
   sales_count date_time           date       week_num weekday 
         <int> <dttm>              <date>        <dbl> <chr>   
 1          10 2021-01-01 00:00:00 2021-01-01        1 Friday  
 2           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 3           8 2021-01-01 00:00:00 2021-01-01        1 Friday  
 4           6 2021-01-01 00:00:00 2021-01-01        1 Friday  
 5           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 6           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 7           4 2021-01-01 00:00:00 2021-01-01        1 Friday  
 8           3 2021-01-01 00:00:00 2021-01-01        1 Friday  
 9           1 2021-01-01 00:00:00 2021-01-01        1 Friday  
10           5 2021-01-01 00:00:00 2021-01-01        1 Friday  
11           2 2021-01-01 00:00:00 2021-01-01        1 Friday  
12          10 2021-01-02 00:00:00 2021-01-02        1 Saturday
13           5 2021-01-02 00:00:00 2021-01-02        1 Saturday
14           9 2021-01-02 00:00:00 2021-01-02        1 Saturday
15           2 2021-01-02 00:00:00 2021-01-02        1 Saturday
16           8 2021-01-02 00:00:00 2021-01-02        1 Saturday
17           5 2021-01-02 00:00:00 2021-01-02        1 Saturday
18           6 2021-01-02 00:00:00 2021-01-02        1 Saturday
19           8 2021-01-02 00:00:00 2021-01-02        1 Saturday
20           3 2021-01-02 00:00:00 2021-01-02        1 Saturday
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文