R 检索月份数据

R 检索月份数据,r,date,dplyr,R,Date,Dplyr,将“日期”转换为date类,使用格式提取“YearMonth”,并使用xtabs在base R id 201302 201303 201304 1 xx33 25 0 0 2 xx22 100 0 0 3 xx11 0 30 0 4 xx00 0 0 15 df$monthyear使用tidyverse的另一种方式: df$monthyear <- fo

将“日期”转换为
date
类,使用
格式提取“YearMonth”,并使用
xtabs
base R

    id  201302  201303  201304
1   xx33    25    0        0
2   xx22   100    0        0
3   xx11    0     30       0
4   xx00    0     0        15 

df$monthyear使用tidyverse的另一种方式:

df$monthyear <- format(as.Date(df$date, "%d/%m/%Y"), "%Y%m")
xtabs(amount~ id + monthyear, df)
#       monthyear
#id     201302 201303 201304
#  xx00      0      0     15
#  xx11      0     30      0
#  xx22    100      0      0
#  xx33     25      0      0
库(tidyverse)
图书馆(lubridate)
df%>%
变化(月\年=格式(dmy(日期),%Y%m”)%>%
分组依据(月\年,id)%>%
汇总(s=总额(金额))%>%
价差(月/年,s,填充=0)
#一个tibble:4x4
id`201302``201303``201304`
*             
1 xx00 0 15.0
2 xx11 0 30.0 0
3 xx22 100 0 0
4 xx33 25.0

为了完整起见,这里还有一个解决方案,它使用了
dplyr
的前身之一
restrape2
包中的
dcast()

library(tidyverse)
library(lubridate)

df %>%
  mutate(month_year = format(dmy(date), "%Y%m")) %>%
  group_by(month_year, id) %>% 
  summarise(s = sum(amount)) %>% 
  spread(month_year, s, fill = 0)

# A tibble: 4 x 4
  id     `201302` `201303` `201304`
* <fctr>    <dbl>    <dbl>    <dbl>
1 xx00        0        0       15.0
2 xx11        0       30.0      0  
3 xx22      100        0        0  
4 xx33       25.0      0        0  

我猜这是因为这个问题有一个dplyr标签(尽管没有必要投否决票,而且不是我:-)。。。(我喜欢你简单的回答)
library(tidyverse)
library(lubridate)

df %>%
  mutate(month_year = format(dmy(date), "%Y%m")) %>%
  group_by(month_year, id) %>% 
  summarise(s = sum(amount)) %>% 
  spread(month_year, s, fill = 0)

# A tibble: 4 x 4
  id     `201302` `201303` `201304`
* <fctr>    <dbl>    <dbl>    <dbl>
1 xx00        0        0       15.0
2 xx11        0       30.0      0  
3 xx22      100        0        0  
4 xx33       25.0      0        0  
library(reshape2)
library(lubridate)
dcast(df, id ~ format(dmy(date), "%Y%m"), sum, value.var = "amount")
    id 201302 201303 201304
1 xx00      0      0     15
2 xx11      0     30      0
3 xx22    100      0      0
4 xx33     25      0      0