我的问题是,我需要将包含日期的多个列与一个参考列(此处为ref_date)进行比较,并将每行在该参考日期之前/小于该参考日期的观察数存储在一个新列中(我们称之为count_date).

我在此提供一个小样本数据:

ID <- c("1", "2", "3", "4", "5")
date1 <- sample(seq(as.Date('2000/01/01'), Sys.Date(), by="day"), 5)
date2 <- sample(seq(as.Date('2000/01/01'), Sys.Date(), by="day"), 5)
date3 <- sample(seq(as.Date('2000/01/01'), Sys.Date(), by="day"), 5)
ref_date <- sample(seq(as.Date('2000/01/01'), Sys.Date(), by="day"), 5)
count_date <-0
df_test <- data.frame(ID,date1,date2,date3,ref_date,count_date)

推荐答案

我们可以循环across个"date"列,创建一个逻辑向量(<)和ref_date,并获得真值的rowSums,以返回每行的"count"

library(dplyr)
df_test %>% 
    mutate(count_date = rowSums(across(starts_with('date'), ~ .x < ref_date)))

-输出

  ID      date1      date2      date3   ref_date count_date
1  1 2011-02-12 2006-03-11 2013-04-20 2014-07-22          3
2  2 2011-03-27 2008-02-01 2017-07-25 2015-05-29          2
3  3 2011-03-08 2009-11-14 2009-05-26 2012-09-27          3
4  4 2016-11-29 2014-12-20 2007-10-03 2014-10-03          1
5  5 2007-11-27 2011-08-15 2011-07-21 2005-12-12          0

R相关问答推荐

将合并数据框的列的行顺序保持与2个初始格式的公共列的行顺序相同

是否有R代码来判断一个组中的所有值是否与另一个组中的所有值相同?

如何判断某列中由某些行组成的百分比

在R底座中更改白天和夜晚的背景 colored颜色

ggplot geom_smooth()用于线性回归虚拟变量-没有回归线

Highcharter多次钻取不起作用,使用不同方法

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

用值序列对行进行子集化,并标识序列开始的列

在for循环中转换rabrame

bslib::card_header中的shine::downloadButton,图标而不是文本

Ggplot2中的重复注记

如何删除最后一个可操作对象

TreeNode打印 twig 并为其上色

从多面条形图中删除可变部分

警告消息";没有非缺失的参数到min;,正在返回数据中的inf";.表分组集

手动指定从相同数据创建的叠加图的 colored颜色

有没有办法一次粘贴所有列

R -基线图-图形周围的阴影区域

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

判断函数未加载R中的库