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