0

Hi I have a frequency table (dataframe), but I want to collapse the rows of the table into similar values/groups

indigenousstatus  counts frequencies
1                 10     10.0
2                 20     20.0
3                 10     10.0
4                 50     50.0
5                 5      5.0
6                 5      5.0 

I want to group 1,2,3 and name it Indigenous 4 and name it Non-indigenous 6,7 and name it Not specified

indigenousstatus counts frequencies
Indigenous       40     40.0
Non-Indigenous   50     50.0
Not specified    10     10.0 

I'm very new to R please help!

Tina
  • 5
  • 1

1 Answers1

0

You can create new groups using case_when or cut and then take sum of remaining columns.

library(dplyr)
df %>%
  group_by(indigenousstatus = case_when(indigenousstatus %in% 1:3 ~ "Indigenous", 
                                        indigenousstatus == 4 ~ "NonIndigenous", 
                                        TRUE ~ "Not specified ")) %>%
  summarise(across(.fns = sum))
  #summarise_all in dplyr < 1.0.0
  #summarise_all(sum)


# indigenousstatus counts frequencies
#  <chr>             <int>       <dbl>
#1 "Indigenous"         40          40
#2 "NonIndigenous"      50          50
#3 "Not specified "     10          10
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213