r - 根据测量日期与另一个数据集中的其他两个日期相比,标记一个数据集中的行
问题描述
library(data.table)
testset <- data.table(date=as.Date(c("2013-07-02","2013-08-03","2013-09-04",
"2013-10-05","2013-11-06")),
yr = c(2013,2013,2013,2013,2013),
mo = c(07,08,09,10,11),
da = c(02,03,04,05,06),
plant = LETTERS[1:5],
product = as.factor(letters[26:22]),
rating = runif(25))
我有这个数据集,我想为每一行创建一个类别或根据日期列在该行上命名。我想将此日期与另一个数据集中的日期进行比较:
library(lubridate)
splitDates <- ymd(c("2013-06-10", "2013-08-15", "2013-10-06"))
使用 splitDates 我想评估 splitDates 中的哪个值在进行测量之前最后出现。(如果您想象从 2013 年 6 月 10 日到但不包括 2013 年 8 月 15 日进行了一项新实验,我想确定测量属于哪个实验)。
我可以看到这个新列中的前五行应该是这样的:
NewColumn <- c("2013-06-10", "2013-06-10", "2013-08-15", "2013-08-15", "2013-10-06")
date yr mo da plant product rating NewColumn
1: 2013-07-02 2013 7 2 A z 0.02522850 2013-06-10
2: 2013-08-03 2013 8 3 B y 0.28274066 2013-06-10
3: 2013-09-04 2013 9 4 C x 0.86314441 2013-08-15
4: 2013-10-05 2013 10 5 D w 0.01670862 2013-08-15
5: 2013-11-06 2013 11 6 E v 0.16034175 2013-10-06
...
我不知道该怎么做。
解决方案
这是我的看法
library(dplyr)
dta <- data.frame(NewColumn=splitDates,newvar=1:3)
testset$newvar <- sapply(testset[,1], function(x) ifelse(x<splitDates[2],1,ifelse(x<splitDates[3],2,3)))
final_data <- semi_join(testset,dta,by="newvar")
数据:
testset <- data.table(date=as.Date(c("2013-07-02","2013-08-03","2013-09-04",
"2013-10-05","2013-11-06")),
yr = c(2013,2013,2013,2013,2013),
mo = c(07,08,09,10,11),
da = c(02,03,04,05,06),
plant = LETTERS[1:5],
product = as.factor(letters[26:22]),
rating = runif(25))
splitDates <- ymd(c("2013-06-10", "2013-08-15", "2013-10-06"))
推荐阅读
- php - Sightengine api 返回 fopen(): 文件名不能为空
- spring-batch - 步骤后对收集的数据进行Spring Batch聚合操作
- android - 适合大小的安卓工作室
- c++ - 如何确定代码是非托管还是 CLR?
- mongodb - 在聚合管道中的嵌入文档集合中引用文档字段
- php - 为什么断言不能验证我的 Symfony 表单?
- javascript - 如何使用 if 条件设置多个 getelementsbyid
- angular - Cordova Angular 应用程序(反向)代理配置
- c++ - GtkStatusIcon 不显示自定义图标
- spring - 否决父 bean 的属性