data(efc)
# proportion of value 1 in e42dep
prop(efc, e42dep == 1)
# expression may also be completely quoted
prop(efc, "e42dep == 1")
# use "props()" for multiple logical statements
props(efc, e17age > 70 & e17age < 80)
# proportion of value 1 in e42dep, and all values greater
# than 2 in e42dep, including missing values. will return a data frame
prop(efc, e42dep == 1, e42dep > 2, na.rm = FALSE)
# for factors or character vectors, use quoted or unquoted values
library(sjmisc)
# convert numeric to factor, using labels as factor levels
efc$e16sex <- to_label(efc$e16sex)
efc$n4pstu <- to_label(efc$n4pstu)
# get proportion of female older persons
prop(efc, e16sex == female)
# get proportion of male older persons
prop(efc, e16sex == "male")
# "props()" needs quotes around non-numeric factor levels
props(efc,
e17age > 70 & e17age < 80,
n4pstu == 'Care Level 1' | n4pstu == 'Care Level 3'
)
# also works with pipe-chains
library(dplyr)
efc %>% prop(e17age > 70)
efc %>% prop(e17age > 70, e16sex == 1)
# and with group_by
efc %>%
group_by(e16sex) %>%
prop(e42dep > 2)
efc %>%
select(e42dep, c161sex, c172code, e16sex) %>%
group_by(c161sex, c172code) %>%
prop(e42dep > 2, e16sex == 1)
# same for "props()"
efc %>%
select(e42dep, c161sex, c172code, c12hour, n4pstu) %>%
group_by(c161sex, c172code) %>%
props(
e42dep > 2,
c12hour > 20 & c12hour < 40,
n4pstu == 'Care Level 1' | n4pstu == 'Care Level 3'
)
Run the code above in your browser using DataLab