在R语言中筛选Time_2早于Time_1的subject_id
在R中筛选Time_2早于Time_1的subject_id
步骤1:构造示例数据集
先还原你提供的数据集:
df <- data.frame( subject_id = c("191-5467", "191-6784", "191-3457", "191-0987", "191-1245", "191-2365"), Time_1 = c("18:00", "18:30", "19:00", "19:30", "19:45", "20:00"), Time_2 = c("20:00", "18:50", "21:45", "20:00", "19:00", "19:00"), stringsAsFactors = FALSE )
步骤2:转换时间类型并筛选
原始时间列是字符格式,直接比较虽在本案例中可行,但转换为专门的时间类型能避免潜在的逻辑错误,确保比较准确:
基础R实现
# 首次使用需先安装hms包 # install.packages("hms") library(hms) # 将字符型时间转为hms时间类型 df$Time_1 <- as_hms(df$Time_1) df$Time_2 <- as_hms(df$Time_2) # 筛选Time_2早于Time_1的记录,提取对应的subject_id target_ids <- df$subject_id[df$Time_2 < df$Time_1] print(target_ids)
tidyverse风格实现(代码更直观)
# 首次使用需先安装依赖包 # install.packages(c("dplyr", "hms")) library(dplyr) library(hms) target_ids <- df %>% mutate(across(c(Time_1, Time_2), as_hms)) %>% filter(Time_2 < Time_1) %>% pull(subject_id) print(target_ids)
运行结果
两种方法都会输出符合要求的subject_id:
[1] "191-1245" "191-2365"
内容的提问来源于stack exchange,提问作者Thandi
相关产品推荐
相关产品推荐

