r - 如何通过比较其他两个变量来创建新变量
问题描述
我必须根据其他两个变量中存在的值创建一个名为 coorbidity 的变量并将其添加到数据框中
现在我有名为诊断的数据框,其变量如下
v1 <- c(222,250,255,250.23)
v2 <- c(300,369,400,450)
现在如果 v1 不是 b/w 250-250.99 并且 v2 不是 b/w 390-490 那么新变量中的值 0
如果 v1 是 b/w 250-250.99 并且 v2 不是 b/w 390-490,则新变量 1 中的值
如果 v1 不是 b/w 250-250.99 而 v2 是 b/w 390-490,则新变量 2 中的值
如果 v1 是 b/w 250-250.99 并且 v2 是 b/w 390-490 那么新变量 3 中的值
我已经尝试ifelse
并编写了一个巨大的代码,但它没有给出我下面代码的理想答案部分
diabetic_maindf$comorbidity_1_2 <-
if_else((diagnosis$v1 == diagnosis$v2 ),0,
if_else((diagnosis$v1 == 1 | diagnosis$v2 == 0),1,
if_else((diagnosis$v1 == 0 & diagnosis$v2 == 1),1,
我想要带有第三个变量的数据框如下
v1 <- c(222,250,255,250.23)
v2 <- c(300,369,400,450)
new_var <- c(0,1,2,3)
PS:新手不知道怎么用表格写,不好意思....
解决方案
interaction
当存在类似功能时,不需要逐步执行此操作:
interaction(v1 >= 250 & v1 <= 250.99, v2 >= 390 & v2 <= 490)
#[1] FALSE.FALSE TRUE.FALSE FALSE.TRUE TRUE.TRUE
#Levels: FALSE.FALSE TRUE.FALSE FALSE.TRUE TRUE.TRUE
c(0,1,2,3)[interaction(v1 >= 250 & v1 <= 250.99, v2 >= 390 & v2 <= 490)]
#[1] 0 1 2 3
这种逻辑的好处是它将扩展到n
比较,同时只编写n
语句而不是2^n
显式比较。
推荐阅读
- flutter - Flutter firebase 消息传递 v9.0.0 - 不触发事件
- python - Pyspark - 循环和范围内 - 仅获取最后一个值
- sql - 如何将存储过程的执行插入表中?
- php - 从 API 获取数据 - PHP
- java - SVNKit 使用 ssh 抛出 IOException
- javascript - 引用特定列的引用数组存在问题
- php - 如何使用 wp_get_attachment_url WordPress 显示名称文件
- android - 在不影响用户界面的情况下模拟android上的触摸事件而不影响用户界面(使用root)
- python - 如何使用值列表中的列创建一个新的数据框(下面有更好的描述)?
- amazon-web-services - 在没有 microsoft grap API 的情况下将 OneDrive 文件迁移到 s3?