Import your data

data <- read_csv("../00_data/myData.csv")
## Rows: 247 Columns: 25
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (10): brand, superbowl_ads_dot_com_url, youtube_url, id, kind, etag, ti...
## dbl   (7): year, view_count, like_count, dislike_count, favorite_count, comm...
## lgl   (7): funny, show_product_quickly, patriotic, celebrity, danger, animal...
## dttm  (1): published_at
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
data %>% skimr::skim()
Data summary
Name Piped data
Number of rows 247
Number of columns 25
_______________________
Column type frequency:
character 10
logical 7
numeric 7
POSIXct 1
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
brand 0 1.00 3 9 0 10 0
superbowl_ads_dot_com_url 0 1.00 34 120 0 244 0
youtube_url 11 0.96 43 43 0 233 0
id 11 0.96 11 11 0 233 0
kind 16 0.94 13 13 0 1 0
etag 16 0.94 27 27 0 228 0
title 16 0.94 6 99 0 228 0
description 50 0.80 3 3527 0 194 0
thumbnail 129 0.48 48 48 0 118 0
channel_title 16 0.94 3 37 0 185 0

Variable type: logical

skim_variable n_missing complete_rate mean count
funny 0 1 0.69 TRU: 171, FAL: 76
show_product_quickly 0 1 0.68 TRU: 169, FAL: 78
patriotic 0 1 0.17 FAL: 206, TRU: 41
celebrity 0 1 0.29 FAL: 176, TRU: 71
danger 0 1 0.30 FAL: 172, TRU: 75
animals 0 1 0.37 FAL: 155, TRU: 92
use_sex 0 1 0.27 FAL: 181, TRU: 66

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
year 0 1.00 2010.19 5.86 2000 2005 2010 2015.00 2020 ▇▇▇▇▆
view_count 16 0.94 1407556.46 11971111.01 10 6431 41379 170015.50 176373378 ▇▁▁▁▁
like_count 22 0.91 4146.03 23920.40 0 19 130 527.00 275362 ▇▁▁▁▁
dislike_count 22 0.91 833.54 6948.52 0 1 7 24.00 92990 ▇▁▁▁▁
favorite_count 16 0.94 0.00 0.00 0 0 0 0.00 0 ▁▁▇▁▁
comment_count 25 0.90 188.64 986.46 0 1 10 50.75 9190 ▇▁▁▁▁
category_id 16 0.94 19.32 8.00 1 17 23 24.00 29 ▃▁▂▆▇

Variable type: POSIXct

skim_variable n_missing complete_rate min max median n_unique
published_at 16 0.94 2006-02-06 10:02:36 2021-01-27 13:11:29 2013-01-31 09:13:55 227

Create Data frame functions

Example 1: count columns

code snippets

ncol_num <- data %>%
    
    # Select a type of variables
    select(where(is.numeric)) %>%
    
    # Count columns
    ncol()

ncol_num
## [1] 7

Turn them into a function

count_ncol_numeric <- function(.data) {
    
    # body 
    ncol_num <- .data %>%
    
    # Select a type of variables
    select(where(is.numeric)) %>%
    
    # Count columns
    ncol()
    
    #return new variable
    return(ncol_num)
    
}

data %>% count_ncol_numeric()
## [1] 7
data %>% . [1:10, -1:-13] %>% count_ncol_numeric()
## [1] 6

Adding arguments for details of operation

count_ncol_type <- function( data, type_data = "numeric"){
    
    # if statement for type of variables
    if(type_data == "numeric") {
        # body
        ncol_type <- data %>%
            
            #select a type of variables
            select(where(is.numeric)) %>% 
            
            # count columns 
            ncol()
    } else if(type_data == "character") {
        #body
        ncol_type <- data %>%
            
            #select a type of variables
            select(where(is.character)) %>%
            
            #count columns
            ncol()
         }
          
        #return the new variable
        return(ncol_type)
    
}

data %>% count_ncol_type()
## [1] 7
data %>% count_ncol_type(type_data = "character")
## [1] 10
data %>% . [1:10, 1:5] %>% count_ncol_type(type_data = "character")
## [1] 3

Example 2: count rows

code snippets

nrow_num <- data %>%
    
    #filter rows that meet a condition
    filter(brand == "Kia") %>%
    
    # Count rows
    nrow()

nrow_num
## [1] 13

Turn them into a function

count_num_view_count_by_brand <- function(.data, brand_name) {
    
    # body
    nrow_num <- .data %>%
        
        # filter rows that meet a condition
        filter(brand == brand_name) %>%
        
        # count rows
        nrow()
   
         # return the new variable
        return(nrow_num)
    
}

data %>% .[1:10, "brand"] %>% count_num_view_count_by_brand(brand_name = "Kia")
## [1] 1

Example 3: count rows

Create your own.

code snippets

Use the filter() function to select rows that meet a condition. Refer to Chapter 5.2 Filter rows with filter()

nrow_num <- data %>%
    
    #filter rows that meet a condition
    filter(brand == "NFL") %>%
    
    # Count rows
    nrow()

nrow_num
## [1] 11

Turn them into a function

count_num_like_count_by_brand <- function(.data, brand_name) {
    
    # body
    nrow_num <- .data %>%
        
        # filter rows that meet a condition
        filter(brand == brand_name) %>%
        
        # count rows
        nrow()
   
         # return the new variable
        return(nrow_num)
    
}

data %>% .[1:10, "brand"] %>% count_num_like_count_by_brand(brand_name = "NFL")
## [1] 0