我有问题根据另外两个变量生成一个数字序列。 具体来说,我有以下的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