Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dplyr - using mutate() like rowmeans()

Tags:

r

dplyr

I can't find the answer anywhere.

I would like to calculate new variable of data frame which is based on mean of rows.

For example:

data <- data.frame(id=c(101,102,103), a=c(1,2,3), b=c(2,2,2), c=c(3,3,3)) 

I want to use mutate to make variable d which is mean of a,b and c. And I would like to be able to make that by selecting columns in way d=mean(a,b,c), and also I need to use range of variables (like in dplyr) d=mean(a:c).

And of course

mutate(data, c=mean(a,b))  

or

mutate(data, c=rowMeans(a,b))  

doesn't work.

Can you give me some tip?

Regards

like image 665
Tomasz Wojtas Avatar asked Oct 28 '15 21:10

Tomasz Wojtas


People also ask

What does mutate () do in R?

In R programming, the mutate function is used to create a new variable from a data set. In order to use the function, we need to install the dplyr package, which is an add-on to R that includes a host of cool functions for selecting, filtering, grouping, and arranging data.

How do I sum across rows in R dplyr?

Syntax: mutate(new-col-name = rowSums(.)) The rowSums() method is used to calculate the sum of each row and then append the value at the end of each row under the new column name specified. The argument . is used to apply the function over all the cells of the data frame.

What does rowwise () do in R?

rowwise() allows you to compute on a data frame a row-at-a-time. This is most useful when a vectorised function doesn't exist. Most dplyr verbs preserve row-wise grouping.


1 Answers

You're looking for

data %>%      rowwise() %>%      mutate(c=mean(c(a,b)))  #      id     a     b     c #   (dbl) (dbl) (dbl) (dbl) # 1   101     1     2   1.5 # 2   102     2     2   2.0 # 3   103     3     2   2.5 

or

library(purrr) data %>%      rowwise() %>%      mutate(c=lift_vd(mean)(a,b)) 
like image 155
Matthew Plourde Avatar answered Sep 22 '22 19:09

Matthew Plourde