[英]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.