How can I get with dplyr the minimum (or mean) value of each row on a data.frame? I mean the same result as
apply(mydataframe, 1, mean)
apply(mydataframe, 1, min)
I've tried
mydataframe %>% rowwise() %>% mean
or
mydataframe %>% rowwise() %>% summarise(mean)
or other combinations but I always get errors, I don't know the proper way.
I know that I could also use rowMeans, but there is no simple "rowMin" equivalent. There also exist a matrixStats package but most functions don't accept data.frames, only matrixes.
If I want to calculate the min rowwise I could use
do.call(pmin, mydataframe)
Is there anything simple like this for the rowwise mean?
do.call(mean, mydataframe)
doesn't work, I guess I need a pmean function or something more complex.
Thanks
In order to compare the results we could all work on the same example:
set.seed(124)
df <- data.frame(A=rnorm(10), B=rnorm(10), C=rnorm(10))
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.
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.
Row wise sum of the dataframe using dplyr: Method 1 rowSums() function takes up the columns 2 to 4 and performs the row wise operation with NA values replaced to zero. row wise sum is performed using pipe (%>%) operator of the dplyr package.
rowwise() is just a special form of grouping, so if you want to remove it from a data frame, just call ungroup() .
I suppose this is what you were trying to accomplish:
df <- data.frame(A=rnorm(10), B=rnorm(10), C=rnorm(10))
library(dplyr)
df %>% rowwise() %>% mutate(Min = min(A, B, C), Mean = mean(c(A, B, C)))
# A B C Min Mean
# 1 1.3720142 0.2156418 0.61260582 0.2156418 0.73342060
# 2 -1.4265665 -0.2090585 -0.05978302 -1.4265665 -0.56513600
# 3 0.6801410 1.5695065 -2.70446924 -2.7044692 -0.15160724
# 4 0.0335067 0.8367425 -0.83621791 -0.8362179 0.01134377
# 5 -0.2068252 -0.2305140 0.23764322 -0.2305140 -0.06656532
# 6 -0.3571095 -0.8776854 -0.80199141 -0.8776854 -0.67892877
# 7 1.0667424 -0.6376245 -0.41189564 -0.6376245 0.00574078
# 8 -1.0003376 -1.5985281 0.90406055 -1.5985281 -0.56493504
# 9 -0.8218494 1.1100531 -1.12477401 -1.1247740 -0.27885677
# 10 0.7868666 0.6099156 -0.58994138 -0.5899414 0.26894694
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With