r-创建实验当天的变量

  • 本文关键字:变量 创建 实验 r date
  • 更新时间 :
  • 英文 :


我有一个跨越一个月的大数据集,数据标记在一个名为txn_date的列中,如下所示。(这是它的玩具复制品(

dat1 <- read.table(text = "var1 txn_date 
5 2020-10-25
1 2020-10-25
3 2020-10-26
4 2020-10-27
1 2020-10-27 
3 2020-10-31  
3 2020-11-01 
8 2020-11-02 ", header = TRUE)

理想情况下,我想在数据框中为数据中的每个日期获取一列,我认为可以通过首先为出现的第一个日期获取一个1的列来完成,然后以此类推

所以像这个

dat1 <- read.table(text = "var1 txn_date day
5 2020-10-25 1
1 2020-10-25 1
3 2020-10-26 2
4 2020-10-27 3
1 2020-10-27 3
3 2020-10-31 7  
3 2020-11-01 8
8 2020-11-12 9 ", header = TRUE

我不太清楚怎么弄到这个。txn_date列是我实际数据帧中的as.Date。我想,如果我能得到上面列出的单个day列(然后将其转换为因子(,那么如果需要的话,我总是可以对该列的实际水平进行一次热编码。最终,我需要将实验当天作为我要运行的回归中的回归器。

类似y ~ x + day_1 + day_2 +...+ error的东西

这样合适吗?

library(tidyverse)
dat1 <- read.table(text = "var1 txn_date 
5 2020-10-25
1 2020-10-25
3 2020-10-26
4 2020-10-27
1 2020-10-27 
3 2020-10-31  
3 2020-11-01 
8 2020-11-02 ", header = TRUE)
dat1$txn_date <- as.Date(dat1$txn_date)
dat1 %>% 
mutate(days = txn_date - txn_date[1] + 1)
#  var1   txn_date   days
#1    5 2020-10-25 1 days
#2    1 2020-10-25 1 days
#3    3 2020-10-26 2 days
#4    4 2020-10-27 3 days
#5    1 2020-10-27 3 days
#6    3 2020-10-31 7 days
#7    3 2020-11-01 8 days
#8    8 2020-11-02 9 days

我们基于'txn_date'和matchminmax创建一个日期序列

dates <- seq(min(as.Date(dat1$txn_date)), 
max(as.Date(dat1$txn_date)), by = '1 day')
dat1$day <- with(dat1, match(as.Date(txn_date), dates))
dat1$day
#[1] 1 1 2 3 3 7 8 9

或者可以使用factor路由

with(dat1, as.integer(factor(txn_date, levels = as.character(dates))))
#[1] 1 1 2 3 3 7 8 9

最新更新