如何在R中创建新列并添加每天的旅行次数

时间:2018-11-30 21:19:05

标签: r

我有下面的数据集(带有更多列),我想创建一个新列并在其中添加每天的旅行次数。我想我必须计算“日期”列,我尝试了很少的代码,但没有成功。

Trip Duration  Date         Start Station ID
680            01/01/2017        495
1282           01/01/2017        498
648            01/01/2017        333
632            02/01/2017        348
583            02/01/2017        958
589            03/01/2017        019
584            03/01/2017        496
867            03/01/2017        400
594            01/02/2017        419
587            01/02/2017        409
948            02/02/2017        395
476            02/02/2017        598

非常感谢

2 个答案:

答案 0 :(得分:1)

首先让您的数据可重现。总是对此担心。向reproducible example提供非常重要的建议,以供可能花费一些时间来帮助的人。

df <- read.table(
  text = "
  Trip_Duration  Date         Start_Station_ID
  680            01/01/2017        495
  1282           01/01/2017        498
  648            01/01/2017        333
  632            02/01/2017        348
  583            02/01/2017        958
  589            03/01/2017        019
  584            03/01/2017        496
  867            03/01/2017        400
  594            01/02/2017        419
  587            01/02/2017        409
  948            02/02/2017        395
  476            02/02/2017        598
  ", header = TRUE)

使用dplyr,您可以执行以下操作:

df %>% 
  group_by(Date) %>% 
  mutate(Trips = n()) %>% 
  ungroup()

# A tibble: 12 x 4
   Trip_Duration Date       Start_Station_ID Trips
           <int> <fct>                 <int> <int>
 1           680 01/01/2017              495     3
 2          1282 01/01/2017              498     3
 3           648 01/01/2017              333     3
 4           632 02/01/2017              348     2
 5           583 02/01/2017              958     2
 6           589 03/01/2017               19     3
 7           584 03/01/2017              496     3
 8           867 03/01/2017              400     3
 9           594 01/02/2017              419     2
10           587 01/02/2017              409     2
11           948 02/02/2017              395     2
12           476 02/02/2017              598     2

首先我们group_by(Date),它是跳闸频率的目标变量。在n()中使用mutate()语句进行每天计数之后,将结果添加到名为Trips的新变量中。最后,我们ungroup()数据帧。

答案 1 :(得分:1)

您可以通过这种方式汇总它们,然后将其与数据合并。

使用Bruno Pinheiro数据,但重命名日期列:

library(dpyr)
colnames(df)[2] <-'date_trip'                                            # renaming the 2 column                                  
dats <- df %>% group_by(date_trip) %>% summarise(num_of_trips = n()      # count the trip
                                    )
dats
# A tibble: 5 x 3
  date_trip  num_of_trips 
  <fct>             <int>      
1 01/01/2017            3       
2 01/02/2017            2       
3 02/01/2017            2       
4 02/02/2017            2         
5 03/01/2017            3