Luis Carmona Martinez
Luis Carmona Martinez

Reputation: 129

Percentage by group with many columns

I have a data frame with round 100 columns from var1 to var100.

Grouping variable is a logical variable with 2 possible values, TRUE and FALSE.

What I am looking for it is to calculate the percentage of each variable from 1 to 100 variables by the grouping variable called Group that is a logical variable with only two values TRUE and FALSE.

Sample

Test_dataframe <- data.frame(Group=c(TRUE,TRUE,TRUE,FALSE,FALSE,FALSE),
                             var1=c(1,0,1,0,1,0),
                             var2=c(0,1,0,1,0,1),
                             var3=c(0,0,0,1,0,1))

Expected result:

 Result_dataframe <- data.frame(Group=c(TRUE,FALSE),
+                              var1=c(0.66,0.33),
+                              var2=c(0.33,0.66),
+                              var3=c(0,0.66))

What I have tried so far.

Result_dataframe  <-Test_dataframe  %>%  group_by(Group) %>% summarise_each(funs(sum))

Upvotes: 1

Views: 216

Answers (1)

akrun
akrun

Reputation: 887911

We can use mean instead of sum

library(dplyr)
Test_dataframe %>% 
   group_by(Group) %>%
   summarise(across(everything(), mean), .groups = "drop")

-output

# A tibble: 2 × 4
  Group  var1  var2  var3
  <lgl> <dbl> <dbl> <dbl>
1 FALSE 0.333 0.667 0.667
2 TRUE  0.667 0.333 0    

Upvotes: 4

Related Questions