簡體   English   中英

如何為R中的每個ID分配日期序列

[英]How to assign sequence of dates for every id in R

樣本數據:

 x <- data.frame(id=c(1,1,1,2,2,7,7,7,7,9,9,10),dna=c(232,424,5345,45345,45,345,4543,345345,4545,2323,23,1222))
 date.seq <- as.Date(Sys.Date():as.Date("2014-09-10"))[1:length(unique(x$id))]

在這里,我確實填寫了每個ID對應的日期。

data.frame(x,Dates=rep(date.seq,data.frame(table(x$id))$Freq))

得到:

    id   dna      Dates
  1  1   232 2014-08-16
  2  1   424 2014-08-16
  3  1  5345 2014-08-16
  4  2 45345 2014-08-17
  5  2    45 2014-08-17
  6  7   345 2014-08-18

但是,我想任意指定日期序列的長度。 所需的日期跨越3個id的輸出:

      id    dna      Dates
   1   1    232 16-08-2014
   2   1    424 16-08-2014
   3   1   5345 16-08-2014
   4   2  45345 16-08-2014
   5   2     45 16-08-2014
   6   7    345 16-08-2014
   7   7   4543 16-08-2014
   8   7 345345 16-08-2014
   9   7   4545 16-08-2014
   10  9   2323 17-08-2014
   11  9     23 17-08-2014
   12 10   1222 18-08-2014

首先創建一個id的順序列表,然后使用除法運算符將每個id分配給一個組。

x <- data.frame(id=c(1,1,1,2,2,7,7,7,7),dna=c(232,424,5345,45345,45,345,4543,345345,4545))
seq.id <- match(x$id,unique(x$id))

n <- 1
x$Dates <- Sys.Date() + (seq.id-1) %/% n
#   id    dna      Dates
# 1  1    232 2014-08-16
# 2  1    424 2014-08-16
# 3  1   5345 2014-08-16
# 4  2  45345 2014-08-17
# 5  2     45 2014-08-17
# 6  7    345 2014-08-18
# 7  7   4543 2014-08-18
# 8  7 345345 2014-08-18
# 9  7   4545 2014-08-18

n <- 2
x$Dates <- Sys.Date() + (seq.id-1) %/% n
#   id    dna      Dates
# 1  1    232 2014-08-16
# 2  1    424 2014-08-16
# 3  1   5345 2014-08-16
# 4  2  45345 2014-08-16
# 5  2     45 2014-08-16
# 6  7    345 2014-08-17
# 7  7   4543 2014-08-17
# 8  7 345345 2014-08-17
# 9  7   4545 2014-08-17

n <- 3
x$Dates <- Sys.Date() + (seq.id-1) %/% n
#   id    dna      Dates
# 1  1    232 2014-08-16
# 2  1    424 2014-08-16
# 3  1   5345 2014-08-16
# 4  2  45345 2014-08-16
# 5  2     45 2014-08-16
# 6  7    345 2014-08-16
# 7  7   4543 2014-08-16
# 8  7 345345 2014-08-16
# 9  7   4545 2014-08-16

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM