我想确定谁是保险数据库中的默认成员和自愿成员。默认成员是具有一定数量单位的成员,具体取决于其年龄。自愿会员是指与该年龄段的默认会员相比单位数量更多的会员。
我想在R中创建一列,显示“默认”或“自愿”
我有一张默认成员的单位数量表。例如:
entryComponents
我通常会在Excel中通过查看会员的单位数量来做到这一点,如果它等于上表中的默认单位数量,我会说它们是默认的,如果不是非默认的。
这就是我要在excel中实现的方式
AppLogedModule
我希望输出为“默认”或“自愿”
答案 0 :(得分:0)
使用您作为lookup
表提供的数据,我创建了一个人年龄和他们拥有的单位数的数据,加入了lookup
的阈值,并将这些值与{{1} }:
ifelse
答案 1 :(得分:0)
if (!require("prodlim")) {
install.packages("prodlim")
require("prodlim")
} # ensure installation and loading of package "prodlim"
ifelse(is.na(row.match(as.data.frame(dat), as.data.frame(lookup))),
"Voluntary",
"Default")
## [1] "Default" "Voluntary" "Voluntary" "Default" "Default" "Default"
## the function
## prodlim::row.match(as.data.frame(dat), as.data.frame(lookup))
## returns for each row in dat,
## the matching row number in lookup or
## NA if there is no match
##
## This resulting vector one can use to translate any non-NA to "Default" and
## any NA to "Voluntary" using the vectorized `ifelse`
我以@Paul之后的示例数据为例:
require(dplyr)
dat <- tibble(Age = c(50, 50, 49, 26, 32, 18), Units = c(3, 5, 5, 3, 4, 2))
lookup <- structure(list(Age = 18:69,
Units = c(2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L)),
row.names = c(NA,
-52L), class = c("tbl_df", "tbl", "data.frame"))