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"
CodePudding user response:
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"