Я создаю функцию, которая будет кодировать людей в зависимости от их семейного состава. Как видно из кода ниже, № 21 обозначает пару с одним или несколькими детьми в возрасте до 15 лет.
# 10 One adult without children
# 11 One adult with at least an own son or daughter aged less than 15
# 12 else: an own child aged 15 to 24 (1)
# 13 else: another child aged less than 15
# 20 One couple without children
# 21 One couple with at least:an own son or daughter aged less than 15
# 22 else: an own child aged 15 to 24 (1)
# 23 else: another child aged less than 15
Используя функции case_when () иween (), я помечаю наблюдения, как показано ниже:
V(x)$age.code <- case_when(V(x)$age <= 15 ~ "x1",
between(V(x)$age, 15, 18) ~ "x2",
between(V(x)$age, 18, 24) ~ "X3",
V(x)$age > 24 ~ "X4")
Затем я создаю функцию подсчета взрослых / детей по домашним хозяйствам.
hhcomp <- function(x){
if (sum(x == "X4", na.rm = T) == 1 | sum(x == "x3", na.rm = T) == 1)
{y <- "10"}
else if (sum(x == "X4", na.rm = T) | sum(x == "X3", na.rm = T) == 1 &
sum(x == "X1", na.rm = T) >= 1)
{y <- "11"}
else if ((sum(x == "X4", na.rm = T) | sum(x == "X3", na.rm = T) == 1) &
sum(x == "X2", na.rm = T) >= 1 & sum(x == "X1") >= 1)
{y <- "12"}
else {y <- NA}
}
Как видно выше:
X1 = less than 15
x2 = 15 to 18
X3 = 18 to 24
x4 = greater than 24
У меня проблемы с кодированием сумм в функции hhcomp, особенно для # 12 и # 13. Я не уверен, где поставить операторы амперсанда (&) и (|) и требуются ли скобки
РЕДАКТИРОВАТЬ:
ID FamID Age.Code
1 A1 X1
2 A1 X3
3 A2 X4
4 A2 x4
df.2 <- df %>% group_by(FamID) %>% mutate(code = hhcomp(Age.Code)) %>%
ungroup()
Я хочу посчитать X-термины для каждого FamID и применить код к каждому ID в качестве новой переменной, используя mutate.
У меня проблемы с логическими операторами