我有一些調查數據,其中列對應的項目和行對應於客戶說他們有多大可能購買每個項目。看起來像這樣:更有效的方法來獲得跨數據幀的列頻率計數
item1 = c("Likely", "Unlikely", "Very Likely","Likely")
item2 = c("Likely", "Unlikely", "Very Likely","Unlikely")
item3 = c("Very Likely", "Unlikely", "Very Likely","Likely")
df = data.frame(item1, item2, item3)
我想要一個總結表給出每個項目的每個響應的百分比。現在我在這個過程的每一列上都使用了table(),並且有很多代碼需要處理。我該如何使用plyr來做到這一點,或更快地應用或更快?
目前的解決方案:
d1<-as.data.frame(table(df$item1))
d1$item1_percent<- d1$Freq/sum(d1$Freq)
names(d1)<-c("Response","item1_freqs","item1_percent")
d2<-as.data.frame(table(df$item2))
d2$item2_percent<- d2$Freq/sum(d2$Freq)
names(d2)<-c("Response","item2_freqs","item2_percent")
d3<-as.data.frame(table(df$item3))
d3$item3_percent<- d3$Freq/sum(d3$Freq)
names(d3)<-c("Response","item3_freqs","item3_percent")
results<-cbind(d1,d2[,2:3],d3[,2:3])
注意我並不真正需要的頻率計數,只是百分比。
提前致謝!
'lapply(DF,函數(X)prop.table(表(X))) ' – user20650