根据他人的日期值创建数据框

时间:2019-04-10 10:30:08

标签: r dataframe

我有一个用户ID,事件和事件发生日期的数据框,我想创建一个新的数据框,显示每个用户在每个日期完成了多少个事件。我在下面举例说明了我要实现的目标。日期以d / m / y为单位。

我曾尝试使用tidyr中的gather(),但无法使其正常工作,并且我也尝试过使用with()

So my my dataframe, df, looks like this currently:

UserId    Date           Event

123       01-01-2019     Open
123       01-01-2019     Push
123       03-01-2019     Open
234       01-01-2019     Open
234       02-01-2019     Open
345       02-01-2019     Push
345       05-01-2019     Open
345       05-01-2019     Push
345       05-01-2019     Move
456       03-01-2019     Open
567       05-01-2019     Open
567       05-01-2019     Push


I want to create a new one based on df, that looks as follows:

UserId     01-01-2019    02-01-2019    03-01-2019    04-01-2019    05-01-2019

123        2             0             1             0             0
234        1             1             0             0             0
345        0             1             0             0             3
456        0             0             1             0             0
567        0             0             0             0             2

因此,我实质上是想在90天的时间内获取每天的数据帧。对此的任何帮助都将非常有用。使用with()时,任何与事件无关的日期都将被忽略,这是我不想发生的。

1 个答案:

答案 0 :(得分:0)

我们可以尝试

library(tidyverse)
df1 %>%
     count(UserId, Date) %>%
     spread(Date, n, fill  = 0)
# A tibble: 5 x 5
#  UserId `01-01-2019` `02-01-2019` `03-01-2019` `05-01-2019`
#   <int>        <dbl>        <dbl>        <dbl>        <dbl>
#1    123            2            0            1            0
#2    234            1            1            0            0
#3    345            0            1            0            3
#4    456            0            0            1            0
#5    567            0            0            0            2

或带有table

table(df1[1:2])