1
我是新来的R.这里是我的数据:如何计算每日保留率?
data
id date
1 1 2015/10/1
2 2 2015/10/1
3 3 2015/10/1
4 4 2015/10/1
5 5 2015/10/1
6 1 2015/10/2
7 3 2015/10/2
8 4 2015/10/2
9 6 2015/10/2
10 7 2015/10/2
11 1 2015/10/3
12 7 2015/10/3
13 3 2015/10/3
14 9 2015/10/3
15 1 2015/10/4
16 10 2015/10/4
17 11 2015/10/4
我想计算的“身份证”的每一天的保留率。该id可能每天都有新的或重复的。我想把每天都当作最初的日期,并找到下一天的保留率。
到目前为止,我已经试过......
oct1<-data[which(data$date =="2015/10/1"),]
oct2<-data[which(data$date == "2015/10/2"),]
oct3<-data[which(data$date == "2015/10/3"),]
oct4<-data[which(data$date == "2015/10/4"),]
union_a1<-oct1$id[which(oct1$id%in%oct2$id)]
union_a2<- oct1$id[which(oct1$id%in%oct3$id)]
union_a3<- oct1$id[which(oct1$id%in%oct4$id)]
per_a1=length(union_a1)/length(oct1$id)
per_a2=length(union_a2)/length(oct1$id)
per_a2=length(union_a3)/length(oct1$id)
union_b1<-oct2$id[which(oct2$id%in%oct3$id)]
union_b2<-oct2$id[which(oct2$id%in%oct4$id)]
per_b1<-length(union_b1)/length(oct2$id)
per_b2<- length(union_b2)/length(oct2$id)
union_c1<-oct3$id[which(oct3$id%in%oct4$id)]
per_c1<-length(union_c1)/length(oct3$id)
per_a1
# [1] 0.6
per_a2
# [1] 0.4
per_a3
# [1] 0.2
per_b1
# [1] 0.6
per_b2
# [1] 0.2
per_c1
# [1] 0.25
谁能帮我写一个for
循环来解决这个问题?我认为for
循环很容易计算每一天。
非常感谢你〜dplyr的包真的很有用。其实我的时间数据格式为yyyy-mm-dd,我知道你首先将yyyy/mm/dd改为yyyy-mm-dd。我不知道如何改变这个问题。似乎do({dt1 = data [data $ date == ymd(。$ date1),]不适用于yyyy-mm-dd格式。 – fen
是否可以执行'dput(data)'并且在这里发布输出,所以我可以看到你有什么格式? – AntoniosK
我知道了,但是我的数据太长了,它只显示了十行,你能告诉我怎么能看到控制台的结果吗?保存结果? – fen