我用自带的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