我有問題根據另外兩個變量生成一個數字序列。 具體來說,我有以下的DB(我的真實DB不是那麼平衡!):根據其他變量生成R中的數字序列
ID1=rep((1:1),20)
ID2=rep((2:2),20)
ID3=rep((3:3),20)
ID<-c(ID1,ID2,ID3)
DATE1=rep("2013-1-1",10)
DATE2=rep("2013-1-2",10)
DATE=c(DATE1,DATE2)
IN<-data.frame(ID,DATE=rep(DATE,3))
,我想根據每個每個ID觀察每個日期數生成數的序列,像這個:
OUTPUT<-data.frame(ID,DATE=rep(DATE,3),N=rep(rep(seq(1:10),2),3))
奇怪的是,我嘗試了以下解決方案,適用於上面提供的DB,但不適用於真正的DB!
IN$UNIQUE<-with(IN,as.numeric(interaction(IN$ID,IN$DATE,drop=TRUE,lex.order=TRUE)))#generate unique value for the combination of id and date
PROG<-tapply(IN$DATE,IN$UNIQUE,seq)#generate the sequence
OUTPUT$SEQ<-c(sapply(PROG,"["))#concatenate the sequence in just one vector
現在,我不明白爲什麼解不爲真正的DB工作,一如既往任何提示,非常感謝!
在這裏有該數據集的例子(包括只有一個ID):
id date
1 F2_G 2005-03-09
2 F2_G 2005-06-18
3 F2_G 2005-06-18
4 F2_G 2005-06-18
5 F2_G 2005-06-19
6 F2_G 2005-06-19
7 F2_G 2005-06-19
8 F2_G 2005-06-19
9 F2_G 2005-06-20
+1真的很棒的解決方案,我希望OP能夠接受這個答案,因爲它在輸入數據變化時更加靈活。 –
謝謝@Arun提供這個解決方案,所以基本上我在R中發現了另外兩個有用的函數。我非常感謝所有成員的幫助! – stefano
不幸的是,兩種解決方案都不起作用...對於SimonO101解決方案R報告矢量的長度與數據庫不匹配,而對於@Arun解決方案,R報告的不是有效因子。問題可能與日期的格式有關嗎? – stefano