Home > Mobile >  How do I just calculate the average for a specific set of rows in Rstudio
How do I just calculate the average for a specific set of rows in Rstudio

Time:09-27

DF <- data.frame(Height = rnorm(100, 170, 5),
                 Weight = rnorm(100, 55, 5))
BMI = function(height,weight){(weight/(height)^2*10000)}
DF$bmi = BMI(DF$Height,DF$Weight)

DF$weight_group <- 
  cut(
    x = DF$Weight,
    breaks = c(0,60,70,Inf),
    include.lowest = TRUE,
    labels = c("0-60", "61-70", "71 ")
  )

DF$BMI_group <-
  cut(
    x = DF$bmi,
    breaks = c(0, 19.75582, Inf),
    include.lowest = TRUE,
    labels = c("Below Average", "Above Average")
  )

This is my code. I cannot figure out how to just calculate the average of the last half of the data frame. I didn't know how to add in gender, to make 50 males and 50 females, so this is my work around.

CodePudding user response:

Are you looking for such a solution?


DF <- data.frame(Height = rnorm(100, 170, 5),
                 Weight = rnorm(100, 55, 5),
                 Gender = c(rep("male", 50), rep("female", 50)))


BMI <-  function(height,weight){(weight/(height)^2*10000)}

library(dplyr)
DF %>% 
  group_by(Gender) %>% 
  mutate(bmi = BMI(Height, Weight)) %>% 
  summarise(mean_bmi = mean(bmi))
# A tibble: 2 x 2
  Gender mean_bmi
* <chr>     <dbl>
1 female     19.4
2 male       19.6

CodePudding user response:

We may use sample to create the column, subset the 'Gender' for 'F', and apply the BMI

 DF$Gender <- sample(c("F", "M"), nrow(DF), replace = TRUE, prob = c(0.5, 0.5))
 with(subset(DF, Gender == "F"), mean(BMI(Height, Weight)))

If we want to get the mean of 'BMI' by 'BMI_group'

subdf <- subset(DF, Gender == "F")
with(subdf, tapply(BMI(Height, Weight), BMI_group, FUN = mean))
Below Average Above Average 
     17.57841      21.43003 
  •  Tags:  
  • r
  • Related