iT邦幫忙

0

R語言 統計相同日期同樣項目

想請問我有一個檔案資料如下
https://ithelp.ithome.com.tw/upload/images/20191223/20120843vxz1YWHhsy.png

想把相同日期同樣項目加總變成這樣
https://ithelp.ithome.com.tw/upload/images/20191223/20120843h0iQjLG18y.png

我寫了一段R,是先用日期篩選在一一加總,但是如果天數多的時候感覺不太適用,不知道各位高手是不是有更簡單的方式呢?謝謝

dtakk_done_date <- dtak1[,c(3,15:length(names(dtak1)))]
a<-"2019-12-19"
b<-"2019-12-20"
c<-"2019-12-21"
d<-"2019-12-22"
dtakk_done_date2<-dtakk_done_date%>%filter(dtakk_done_date$服務日期==a)
s1<-colSums(dtakk_done_date2[-1], na.rm = TRUE)

dtakk_done_date3<-dtakk_done_date%>%filter(dtakk_done_date$服務日期==b)
s2<-colSums(dtakk_done_date3[-1], na.rm = TRUE)

dtakk_done_date4<-dtakk_done_date%>%filter(dtakk_done_date$服務日期==c)
s3<-colSums(dtakk_done_date4[-1], na.rm = TRUE)

dtakk_done_date5<-dtakk_done_date%>%filter(dtakk_done_date$服務日期==d)
s4<-colSums(dtakk_done_date5[-1], na.rm = TRUE)

s_total<-cbind(s1,s2,s3,s4)
colnames(s_total)<-c(a,b,c,d)

1 個回答

0
yanchen
iT邦新手 5 級 ‧ 2020-01-06 16:26:41
library(reshape2)
yc.data = 
  data.frame(date=c("2012.1.1","2012.1.2","2012.1.3","2012.1.4","2012.1.5",
                    "2012.1.6","2012.1.7","2012.1.1","2012.1.2","2012.1.3","2012.1.4","2012.1.5",
                    "2012.1.6","2012.1.7"),
             c0=c(0,1,0,1,1,1,0,0,1,0,1,0,0,1),
             c1=c(1,1,1,1,0,0,0,0,1,0,1,0,0,1),
             c2=c(1,1,0,1,0,0,0,1,1,0,1,0,1,0));yc.data

yc.data2 = melt(yc.data,id ="date")
yc.data2 = yc.data2[which(yc.data2$value == "1"),]
yc.data2 = xtabs(~date + variable  , yc.data2)

以後這種問題...給個簡單的資料別人會比較有興趣去做測試
不然我這樣打完你也要改欄位名稱,麻煩到你也是降低別人code的意願
然後我現在才看到,你應該已經解決了,ㄅ欠,但我還是順手練一下筆哈哈

第一行先讓資料降維度,然後僅保留true值,最後做簡單的統計
方法很多,參考下吧!

我要發表回答

立即登入回答