0

I am trying to remove docked_bike from the results table with the ff:

library(dplyr)

a_v2 <- a_v1[!a_v1$rideable_type == "docked_bike" | a_v1$ride_length<0,]

a_v2 %>% group_by(member_casual) %>%
         summarise(number_of_rides = n(),
                   average_duration = mean(ride_length))

a_v2 %>% group_by(member_casual, rideable_type) %>%
         summarise(number_of_rides = n())

Output:

member_casual rideable_type number of rides
casual classic_bike 1132892
casual docked_bike 5
casual electric_bike 1162202
member classic_bike 1922749
member electric bike 1456488

What change on the code should I do so that I can remove the docked_bike?

Suggested Answer:

a_v2 <- a_v1 [a_v1$rideable_type != "docked_bike" & a_v1$ride_length<0,]

Updated Table:

member_casual rideable_type number of rides
casual classic_bike 24
casual electric_bike 37
member classic_bike 51
member electric bike 32

From 1 million plus rides to double digits, I do not think that is the correct result.

Follow up question:

Is there a code to remove the docked_bike from the original table?

member_casual rideable_type number of rides
casual classic_bike 1132892
casual docked_bike 5
casual electric_bike 1162202
member classic_bike 1922749
member electric bike 1456488

Updated code and table:

a_v2 <- a_v1[a_v1$rideable_type != "docked_bike" | a_v1$ride_length<0,]
a_v2 %>% group_by(member_casual) %>%
     summarise(number_of_rides = n(), average_duration = 
     mean(ride_length))
a_v2 %>% group_by(member_casual, rideable_type) %>%
     summarise(number_of_rides = n()) %>%
     filter( rideable_type != "docked_bike")
member_casual rideable_type number of rides
casual classic_bike 1132892
casual electric_bike 1162202
member classic_bike 1922749
member electric bike 1456488

2 Answers2

0

The following line:

a_v2 <- a_v1 [!a_v1$rideable_type == "docked_bike" | a_v1$ride_length<0,]

It is selecting rows where

  1. a_v1$rideable_type IS NOT "docked_bike"

OR

  1. ride_length < 0.

So if you have a "docked_bike" with a negative ride_length (<0) it will be selected.

Also, instead of ! <something> == <something>, you can use <something> != <something>.

RobertoT
  • 1,663
  • 3
  • 12
  • I am sorry I responded too soon. The line: a_v2 <- a_v1 [!a_v1$rideable_type == "docked_bike" | a_v1$ride_length<0,] removed a lot of data. All the number of rides on my table became less than 100 which I do not think is right. Is there a way to remove the docked_bike from the table row? – Sam Espejo Aug 08 '22 at 13:18
  • That depends on what do you exactly want to filter? Every row that is not docked_bike? What about the ride_length<0? Why did you added that part? @SamEspejo – RobertoT Aug 09 '22 at 14:53
  • Every row that is not docked_bike? Yes What about the ride_length<0? Because there are ride_length that has negative value – Sam Espejo Aug 10 '22 at 02:43
0

following @RobertoT answer try to do:

a_v2 <- a_v1 [a_v1$rideable_type != "docked_bike" & a_v1$ride_length<0,]
user438383
  • 5,716
  • 8
  • 28
  • 43
badgorilla
  • 96
  • 3