Open In App

Divide each dataframe row by vector in R

Last Updated : 17 May, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will discuss how to divide each dataframe row by vector in R Programming Language.

Method 1 : Using mapply() method

The mapply() method can be used to apply a FUN to the dataframe or a matrix, to modify the data. The function specified as the first argument may be any boolean operator, arithmetic, or logical. The operator is then applied taking the dataframe row as one operand and the vector as the other. The result has to be stored in another variable. The time incurred in this operation is equivalent to the number of rows in the dataframe. 

Syntax: mapply(FUN, df , vec)

Example:

R




# declaring dataframe
data_frame <- data.frame(col1 = c(2,4,6), col2 = c(4,6,8), 
                         col3 = c(8,10,12), col4 = c(20,16,14))
  
print ("Original Dataframe")
print (data_frame)
  
# declaring vector
vec <-  c(1:4)
  
# dividing each row by vector
div <- mapply('/', data_frame, vec)
  
print ("Result of division")
print (div)


Output

[1] "Original Dataframe"
 col1 col2 col3 col4
1    2    4    8   20
2    4    6   10   16
3    6    8   12   14
[1] "Result of division"
    col1 col2     col3 col4
[1,]    2    2 2.666667  5.0
[2,]    4    3 3.333333  4.0
[3,]    6    4 4.000000  3.5

Method 2: Using sweep() method

This method in R programming language returns an array obtained from an input array by sweeping out a summary statistic. The method is used to compute arithmetic operations on the dataframe over the chosen axis. For, row-wise operation the chosen axis is 2 and the operand becomes the row of the dataframe. The result has to be stored in another variable. The time incurred in this operation is equivalent to the number of rows in the dataframe. The data type of the resultant column is the largest compatible data type. 

Syntax: sweep (df , axis, vec, op)

Parameter :

  • df – DataFrame
  • axis – To compute it row-wise, use axis = 1 and for column-wise, use axis = 2 
  • vec – The vector to apply on the dataframe
  • op – The operator to apply

Example:

R




# declaring dataframe
data_frame <- data.frame(col1 = c(2,4,6), col2 = c(4,6,8), 
                         col3 = c(8,10,12), col4 = c(20,16,14))
  
print ("Original Dataframe")
print (data_frame)
  
# declaring vector
vec <-  c(1:4)
  
# dividing each row by vector
div <- sweep(data_frame,2,vec,'/')
  
print ("Result of division")
print (div)


Output

[1] "Original Dataframe"
 col1 col2 col3 col4
1    2    4    8   20
2    4    6   10   16
3    6    8   12   14
[1] "Result of division"
 col1 col2     col3 col4
1    2    2 2.666667  5.0
2    4    3 3.333333  4.0
3    6    4 4.000000  3.5 


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads