假設我們有看起來像重塑一個數據幀---改變行列
set.seed(7302012)
county <- rep(letters[1:4], each=2)
state <- rep(LETTERS[1], times=8)
industry <- rep(c("construction", "manufacturing"), 4)
employment <- round(rnorm(8, 100, 50), 0)
establishments <- round(rnorm(8, 20, 5), 0)
data <- data.frame(state, county, industry, employment, establishments)
state county industry employment establishments
1 A a construction 146 19
2 A a manufacturing 110 20
3 A b construction 121 10
4 A b manufacturing 90 27
5 A c construction 197 18
6 A c manufacturing 73 29
7 A d construction 98 30
8 A d manufacturing 102 19
我們想重塑這個數據幀,使每一行代表一個(狀態)縣,而不是縣產業,列construction.employment
,construction.establishments
,和類似的製造版本。什麼是有效的方法來做到這一點?
一種方法是子集
construction <- data[data$industry == "construction", ]
names(construction)[4:5] <- c("construction.employment", "construction.establishments")
同樣地,對於製造,然後做一個合併。如果只有兩個行業,這並不是那麼糟糕,但想象一下有14個行業;這個過程會變得單調乏味(儘管通過在industry
的級別上使用for
循環來減少這個過程)。
還有其他想法嗎?
啊,好的,我用'.'代替'...',所以它不工作。謝謝! – Charlie 2012-07-30 17:06:41