SiH
SiH

Reputation: 1546

Create another column and add a label to it

I am working with SPSS files where each column name (variable) has a label.

I want to create another column using mutate and add a label to keep it consistent with other columns.

Below is an example - add two column sum (a + b + c) and mean. Add label a label "Sum of all", "Mean of all"

library(tidyverse)
library(sjlabelled)

# Set variable labels for data frame
dummy <- tibble(a = sample(1:4, 10, replace = TRUE),
                    b = sample(1:4, 10, replace = TRUE),
                    c = sample(1:4, 10, replace = TRUE)) %>% 
  set_label(c("Variable A", "Variable B", "Variable C"))


# add another columns sum and mean. Add label a label "Sum of all" , "Mean of all"

Upvotes: 1

Views: 65

Answers (1)

akrun
akrun

Reputation: 886938

Based on the data showed, we get the rowSums by selecting across all the columns (everything()) in the data to create the 'Sum', then do the same except the Sum (-Sum) to get the row wise mean (rowMeans) and use set_label to create a named vector by concatenating the already existing labels (get_label) from the data with the new labels

library(sjlabelled)
library(dplyr)
dummy <- dummy %>%
   mutate(Sum = rowSums(across(everything())), 
          Mean = rowMeans(across(c(everything(), -Sum)))) %>%
    set_label(c(get_label(dummy), "Sum" = "Sum of all", "Mean" = "Mean of all" )) 

-checking

> get_label(dummy)
            a             b             c           Sum          Mean 
 "Variable A"  "Variable B"  "Variable C"  "Sum of all" "Mean of all" 

Upvotes: 1

Related Questions