假設我有銷售數據導出數據的列添加到data.frame
> df<-data.frame(country=c("A", "A", "B", "B"), outlet=c(1,2,1,2), sales=c(300, 900,10,40))
> df
country outlet sales
1 A 1 300
2 A 2 900
3 B 1 10
4 B 2 40
的一個簡單的表格,並想補充顯示在該國全部銷售額的貢獻的每一個出口的部分列。我可以用split
爲此,迭代然後使用rbind
重組,但是這看起來很醜陋我
> do.call("rbind",lapply(split(df, df$country), function(x) { x$frac <- NA; tot<-sum(x$sales); for (o in x$outlet) {s<-x[x$outlet== o,]$sales; x[x$outlet == o,]$frac <- s/tot}; return(x)}))
country outlet sales frac
A.1 A 1 300 0.25
A.2 A 2 900 0.75
B.3 B 1 10 0.20
B.4 B 2 40 0.80
是否有這樣做簡單的任務(除寫一個函數爲它這僅僅是掃的清潔方式醜到腳本)?
(和獎勵積分,有沒有防止rbind
從加入行名字樣A.1
所得到的data.frame
的方法嗎?)