如何在R中执行此标准excel操作?

时间:2019-06-11 00:42:42

标签: r

我想确定谁是保险数据库中的默认成员和自愿成员。默认成员是具有一定数量单位的成员,具体取决于其年龄。自愿会员是指与该年龄段的默认会员相比单位数量更多的会员。

我想在R中创建一列,显示“默认”或“自愿”

我有一张默认成员的单位数量表。例如:

entryComponents

我通常会在Excel中通过查看会员的单位数量来做到这一点,如果它等于上表中的默认单位数量,我会说它们是默认的,如果不是非默认的。

这就是我要在excel中实现的方式

AppLogedModule

我希望输出为“默认”或“自愿”

2 个答案:

答案 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"))