首页 > 解决方案 > 编码/求和功能

问题描述

我正在创建一个函数,它将根据人们的家庭组成对他们进行编码。如下代码所示,#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() 和 between() 函数,我标记观察结果,如下所示:

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()

我想计算每个 FamID 的 X 项,并使用 mutate 将代码作为新变量应用于每个 ID。

我在使用逻辑运算符时遇到问题

标签: rfunctiondplyrsum

解决方案


推荐阅读