r - 如何在 R 中按多个日期过滤多个因子级别?
问题描述
我有多个分组变量(id),我想用自己的特定日期过滤每个变量。
mydata <- structure(list(ID = structure(c("A", "A", "A", "B", "B", "B", "C", "C", "C")),
Start = structure(c(1357038060, 1357221074, 1357369644, 1357834170,
1357913412, 1358151763, 1358691675, 1358789411, 1359538400
), class = c("POSIXct", "POSIXt"), tzone = ""), End = structure(c(1357110430,
1357365312, 1357564413, 1358230679, 1357978810, 1358674600,
1358853933, 1359531923, 1359568151), class = c("POSIXct",
"POSIXt"), tzone = "")), .Names = c("Line", "Start", "End"), row.names = c(NA, -9L), class = "data.frame")
我可以使用以下方法单独完成,但我如何将它们组合成一条线?
mydata %>% filter(id == "A" & time >= as.Date("2013-01-01 00:00:00"))
mydata %>% filter(id == "B" & time >= as.Date("2013-01-13 00:00:00"))
mydata %>% filter(id == "C" & time >= as.Date("2013-01-23 00:00:00"))
解决方案
如果有很多日期,那么可以使用循环
library(dplyr)
library(purrr)
v1 <- unique(mydata$Line)
dates <- as.POSIXct(c("2013-01-01", "2013-01-13", "2013-01-23"))
mydata %>%
filter(map2(v1, dates, ~ Line== .x & Start >= .y) %>%
reduce(`|`))
推荐阅读
- wagtail - Wagtail CMS - 按时间倒序显示孩子
- python-3.x - 从原始图像数据集中找到一个改变的图像
- plugins - 重新登录时玩家被取消静音
- windows - 设置到 Windows SFTP 服务器的 WSO2 Enterprise Integrator VFS 连接
- parallel-processing - RuntimeError:模块必须在设备 cuda:1 (device_ids[0]) 上有其参数和缓冲区,但在设备上找到其中之一:cuda:2
- javascript - Azure 分析 UDF
- python - 如何制作 N 个列表来填充数据?
- r - 将结果从包 bife 输出到 word
- java - 创建名为“resourceHandlerMapping”的 bean 时出错
- sql - 创建 Burn-Earn 积分映射