在回顾前几行的同时创建一个新变量

鲍勃

我有一个简单的患者就诊数据集:

date        infection
2005-01-01  yes
2005-06-30  yes
2005-10-15  yes
2006-01-01  no
2006-06-01  no
2006-11-01  yes
2006-12-01  no
2007-11-15  yes

在R,我想添加一个名为列chronic,其取值yesnoNA

  • yes仅在当前日期感染=='是'并且在过去365天中有两个感染=='是'行时才显示该值
  • 否则,需要NA在过去365天中没有两次访问
  • 否则,需要 no

因此,最终数据集将如下所示:

date        infection chronic
2005-01-01  yes       NA
2005-06-30  yes       NA
2005-10-15  yes       yes
2006-01-01  no        no
2006-06-01  no        no
2006-11-01  yes       no
2006-12-01  no        no
2007-11-15  yes       NA

我该如何编码?理想情况下dplyr我想使用,但是我愿意接受任何解决方案。谢谢!

可以使用以下代码重新创建数据集:

dat <- data.frame(date = c(as.Date("2005-01-01"), as.Date("2005-06-30"), as.Date("2005-10-15"), as.Date("2006-01-01"), as.Date("2006-06-01"), as.Date("2006-11-01"), as.Date("2006-12-01"), as.Date("2007-11-15")), infection = c("yes", "yes", "yes", "no", "no", "yes", "no", "yes"))
罗纳克·沙

您可以尝试使用以下map功能purrr

library(dplyr)
library(purrr)

dat %>%
  mutate(chronic = map2_chr(date, infection, 
         ~case_when(.y == 'yes' & 
                    sum(infection[between(date, .x-365, .x - 1)] == 'yes') >= 2 ~ 'yes', 
                    .y == 'yes' & 
                    sum(infection[between(date, .x-365, .x - 1)] == 'yes') != 2 ~ NA_character_, 
                    TRUE ~ 'no')))

#        date infection chronic
#1 2005-01-01       yes    <NA>
#2 2005-06-30       yes    <NA>
#3 2005-10-15       yes     yes
#4 2006-01-01        no      no
#5 2006-06-01        no      no
#6 2006-11-01       yes    <NA>
#7 2006-12-01        no      no
#8 2007-11-15       yes    <NA>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建2个新变量,条件是使用R保留前几行的值

来自分类Dev

如何创建一个新变量并在std :: tie中同时使用它?

来自分类Dev

在插入新记录的同时创建一个新表

来自分类Dev

.eigenvals创建一个新变量

来自分类Dev

.eigenvals创建一个新变量

来自分类Dev

在遍历原始列表的同时创建一个新列表

来自分类Dev

创建一个基于多个变量的逻辑新变量

来自分类Dev

在指令范围内创建一个新变量

来自分类Dev

在Tableau中创建一个新变量

来自分类Dev

创建一个新的cmake输入变量

来自分类Dev

每次循环都创建一个新变量吗?

来自分类Dev

创建一个新变量-有更好的方法吗?

来自分类Dev

创建一个新变量,忽略NA

来自分类Dev

在Scala case块中创建一个新变量?

来自分类Dev

创建一个仅在流中使用的新变量

来自分类Dev

根据观察的模态数量创建一个新变量

来自分类Dev

在每次迭代中创建一个新变量

来自分类Dev

else if 创建一个新的变量 DEBUG

来自分类Dev

如何创建一个新的 BigInteger 变量并创建一个返回 BigInteger 的方法?

来自分类Dev

创建一个没有前一个指针的新表达式

来自分类Dev

如何创建一个按钮,使新对象成为 Swift 中的前一个对象?

来自分类Dev

为什么新的FB长期访问令牌与前一个令牌同时到期?

来自分类Dev

创建一个新的SAS变量,该变量按ID变量的第一个日期递增

来自分类Dev

如何基于R中的两个分类变量创建一个新变量?

来自分类Dev

在新行中放置列,同时添加前几行的信息

来自分类Dev

Python 3-如何创建一个变量,每当另一个变量更新时,该变量将成为一个新变量

来自分类Dev

单个“ mkdir”命令可以创建一个新目录并同时更改到该目录?

来自分类常见问题

创建一个可以同时在类型和变量上调用的类型特征

来自分类Dev

创建一个可以同时在类型和变量上调用的类型特征

Related 相关文章

  1. 1

    创建2个新变量,条件是使用R保留前几行的值

  2. 2

    如何创建一个新变量并在std :: tie中同时使用它?

  3. 3

    在插入新记录的同时创建一个新表

  4. 4

    .eigenvals创建一个新变量

  5. 5

    .eigenvals创建一个新变量

  6. 6

    在遍历原始列表的同时创建一个新列表

  7. 7

    创建一个基于多个变量的逻辑新变量

  8. 8

    在指令范围内创建一个新变量

  9. 9

    在Tableau中创建一个新变量

  10. 10

    创建一个新的cmake输入变量

  11. 11

    每次循环都创建一个新变量吗?

  12. 12

    创建一个新变量-有更好的方法吗?

  13. 13

    创建一个新变量,忽略NA

  14. 14

    在Scala case块中创建一个新变量?

  15. 15

    创建一个仅在流中使用的新变量

  16. 16

    根据观察的模态数量创建一个新变量

  17. 17

    在每次迭代中创建一个新变量

  18. 18

    else if 创建一个新的变量 DEBUG

  19. 19

    如何创建一个新的 BigInteger 变量并创建一个返回 BigInteger 的方法?

  20. 20

    创建一个没有前一个指针的新表达式

  21. 21

    如何创建一个按钮,使新对象成为 Swift 中的前一个对象?

  22. 22

    为什么新的FB长期访问令牌与前一个令牌同时到期?

  23. 23

    创建一个新的SAS变量,该变量按ID变量的第一个日期递增

  24. 24

    如何基于R中的两个分类变量创建一个新变量?

  25. 25

    在新行中放置列,同时添加前几行的信息

  26. 26

    Python 3-如何创建一个变量,每当另一个变量更新时,该变量将成为一个新变量

  27. 27

    单个“ mkdir”命令可以创建一个新目录并同时更改到该目录?

  28. 28

    创建一个可以同时在类型和变量上调用的类型特征

  29. 29

    创建一个可以同时在类型和变量上调用的类型特征

热门标签

归档