Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从旧列R创建具有两个日期条件的新列_R - Fatal编程技术网

从旧列R创建具有两个日期条件的新列

从旧列R创建具有两个日期条件的新列,r,R,我有一个数据帧事件,看起来像这样 EventCount Date 3317 2015-01-05 3388 2015-01-12 3467 2015-01-19 3455 2015-01-26 3506 2015-02-02 3561 2015-02-09 我想创建一个新的列“EventType”,基于事件发生的星期。2015-01-12之前发生的事件属于A类,2015-01-12和2015-02-02之间发生的

我有一个数据帧事件,看起来像这样

EventCount      Date
3317       2015-01-05
3388       2015-01-12
3467       2015-01-19
3455       2015-01-26
3506       2015-02-02
3561       2015-02-09
我想创建一个新的列“EventType”,基于事件发生的星期。2015-01-12之前发生的事件属于A类,2015-01-12和2015-02-02之间发生的事件属于B类,2015-02-02之后发生的事件属于C类

我尝试的是使用ifelse条件创建一个新列

  Events$EventType<-ifelse(Events$Date < as.Date('2015-02-02'),"B","C")
Events$EventType通过使用cut

dt['EventType']=cut(dt$Date,breaks=as.Date(c('2000-01-01','2015-01-12','2015-02-02','2111-01-01')),labels = c('A','B','C'))

 dt
  EventCount       Date EventType
1       3317 2015-01-05         A
2       3388 2015-01-12         B
3       3467 2015-01-19         B
4       3455 2015-01-26         B
5       3506 2015-02-02         C
6       3561 2015-02-09         C
根据最近的邮件

cut(dat$Date, c(as.Date(c("2015-01-12","2015-02-02")), c(-Inf,Inf)), labels=1:3)
通过使用cut

dt['EventType']=cut(dt$Date,breaks=as.Date(c('2000-01-01','2015-01-12','2015-02-02','2111-01-01')),labels = c('A','B','C'))

 dt
  EventCount       Date EventType
1       3317 2015-01-05         A
2       3388 2015-01-12         B
3       3467 2015-01-19         B
4       3455 2015-01-26         B
5       3506 2015-02-02         C
6       3561 2015-02-09         C
根据最近的邮件

cut(dat$Date, c(as.Date(c("2015-01-12","2015-02-02")), c(-Inf,Inf)), labels=1:3)
在实践中(可能还有匆忙),您可以通过以下两种方式使用两个命令来完成:

Events$EventType <- ifelse(Events$Date < as.Date("2015-01-12"), "A", "B")
Events$EventType[Events$Date > "2015-02-02"] <- "C" 
Events$EventType“2015-02-02”]在实践中(可能还有匆忙),您可以通过以下两个命令来完成:

Events$EventType <- ifelse(Events$Date < as.Date("2015-01-12"), "A", "B")
Events$EventType[Events$Date > "2015-02-02"] <- "C" 

Events$EventType“2015-02-02”]下面是我使用sapply函数的尝试

setEventType <- function(date){
  if(date < as.Date("2015-01-12")){
    return("A")
  }
  else if(date >= as.Date("2015-02-02")){
      return("C")
  }
  else{
     return("B")
  }
}

Events$EventType <- sapply(as.Date(Events$Date), setEventType)

下面是我使用sapply函数的尝试

setEventType <- function(date){
  if(date < as.Date("2015-01-12")){
    return("A")
  }
  else if(date >= as.Date("2015-02-02")){
      return("C")
  }
  else{
     return("B")
  }
}

Events$EventType <- sapply(as.Date(Events$Date), setEventType)

看一看。答案是你可以使用的。也可以是有用的。看看。答案是你可以使用的。也可能是有帮助的。为了避免使用大日期和小日期,你也可以使用
Inf
-Inf
cut(dat$Date,c(as.Date(c(“2015-01-12”,“2015-02-02”)),c(-Inf,Inf)),labels=lets[1:3])。
@谢谢你,我一直在找它,拯救我的一天~:)诀窍是确保你最终得到一个
Date
对象,这意味着你不能做更直观的
c(-Inf,as.Date(c(“2015-01-12”,“2015-02-02”)),Inf)
而是
c(as.Date(c(“2015-01-12”,“2015-02-02”)),c(-Inf,Inf))
。后者在打印时将
Inf
值显示为
NA
,但它们实际上存储为
Inf
@最新邮件这很有意义!:)我将标记它以不使用大小日期,您也可以使用
Inf
-Inf
剪切(dat$Date,c(as.Date)(c(“2015-01-12”),“2015-02-02”)),c(-Inf,Inf)),labels=LETTERS[1:3])
@最近的邮件非常感谢,我一直在寻找它,节省我的时间~:)诀窍是确保你最终得到一个
Date
对象,这意味着你不能做更直观的
c(-Inf,as.Date(c(“2015-01-12”,“2015-02-02”)),Inf)
,而是
c(as.Date(c(“2015-01-12”),”2015-02-02“),c(-Inf,Inf))
。后者在打印时将
Inf
值显示为
NA
,但它们实际上存储为
Inf
。@这很有意义!:)我将标记它完成