我用自帶的lme4數據集工作,並且正在努力學習如何運用reshape2把它從長並轉換爲寬[全碼處的結束崗位。重塑一個複雜的數據集從長到廣泛使用重鑄()
library(lme4)
data("VerbAgg") # load the dataset
數據集有9個變量; 「憤怒」,「性別」和「ID」不「項目」有所不同,而「RESP」, 「BTYPE」,「就地」,「模式」和「R2」做。
我已成功能夠將數據集從長期使用重塑()轉換爲寬幅:
wide <- reshape(VerbAgg, timevar=c("item"),
idvar=c("id", 'Gender', 'Anger'), dir="wide")
其中產量在123個變量316個觀察,似乎正確轉化。但是,我沒有成功使用reshape/reshape2重現寬數據幀。
wide2 <- recast(VerbAgg, id + Gender + Anger ~ item + variable)
Using Gender, item, resp, id, btype, situ, mode, r2 as id variables
Error: Casting formula contains variables not found in molten data: Anger
我可能不完全清楚recast如何定義id變量,但我很困惑,爲什麼它看不到「憤怒」。同樣,
wide3 <- recast(VerbAgg, id + Gender + Anger ~ item + variable,
id.var = c("id", "Gender", "Anger"))
Error: Casting formula contains variables not found in molten data: item
任何人都可以看到我在做什麼錯?我很樂意獲得對融化/演員的更好理解!
全碼:
## load the lme4 package
library(lme4)
data("VerbAgg")
head(VerbAgg)
names(VerbAgg)
# Using base reshape()
wide <- reshape(VerbAgg, timevar=c("item"),
idvar=c("id", 'Gender', 'Anger'), dir="wide")
# Using recast
library(reshape2)
wide2 <- recast(VerbAgg, id + Gender + Anger ~ item + variable)
wide3 <- recast(VerbAgg, id + Gender + Anger ~ item + variable,
id.var = c("id", "Gender", "Anger"))
# Using melt/cast
m <- melt(VerbAgg, id=c("id", "Gender", "Anger"))
wide <- o cast(m,id+Gender+Anger~...)
Aggregation requires fun.aggregate: length used as default
# Yields a list object with a length of 8?
m <- melt(VerbAgg, id=c("id", "Gender", "Anger"), measure.vars = c(4,6,7,8,9))
wide <- dcast(m, id ~ variable)
# Yields a data frame object with 6 variables.
+1因爲你**愛**理解融化/鑄造 – agstudy
廣泛產生316觀察26個變量??當我檢查昏暗(寬)我有316行和123列。 – agstudy
「熔化」然後「鑄造」會更好 - 然後你就可以更容易地看到發生了什麼問題。 – hadley