我有以下形式的数据:
brt_id ADDRESS OWNERNAME year PRINCIPAL INTEREST PENALTY OTHER TOTAL LIEN STATUS
1 11000600 00108 WHARTON ST PRUSINOWSKI JOSEPHINE 2001 0 0 0 0 0
2 11000600 00108 WHARTON ST PRUSINOWSKI JOSEPHINE 2002 0 0 0 0 0
3 11000600 00108 WHARTON ST PRUSINOWSKI JOSEPHINE 2003 0 0 0 0 0
4 11000600 00108 WHARTON ST PRUSINOWSKI JOSEPHINE 2004 0 0 0 0 0
5 11000600 00108 WHARTON ST PRUSINOWSKI JOSEPHINE 2005 0 0 0 0 0
6 11000600 00108 WHARTON ST PRUSINOWSKI JOSEPHINE 2006 0 0 0 0 0
我想重塑它“宽一年”(如从STATA类似活动我的直觉),让我得到这样的变量PRINCIPAL_2001
,PRINCIPAL_2002
等等。
但是,当我运行时:
data2m<-melt(data2, id=c("brt_id", "year"))
data2c<-dcast(data2m, brt_id+year~...)
结果数据(应该与原始数据相同)如下所示:
brt_id year ADDRESS OWNERNAME PRINCIPAL INTEREST PENALTY OTHER TOTAL LIEN STATUS
1 11000600 2001 1 1 1 1 1 1 1 1 1
2 11000600 2002 1 1 1 1 1 1 1 1 1
3 11000600 2003 1 1 1 1 1 1 1 1 1
4 11000600 2004 1 1 1 1 1 1 1 1 1
5 11000600 2005 1 1 1 1 1 1 1 1 1
6 11000600 2006 1 1 1 1 1 1 1 1 1
融化数据时会收到警告消息:
Warning message:
attributes are not identical across measure variables; they will be dropped
当我强制转换数据时:
Aggregation function missing: defaulting to length
看起来问题在于投放问题,因为可以看一下融化的数据:
brt_id year variable value
70000000 621506800 2005 LIEN
70000001 621506800 2006 LIEN
70000002 621506800 2007 LIEN
70000003 621506800 2008 LIEN
70000004 621506800 2009 LIEN
如果使用,结果是相似的(尽管更糟)acast
:
ADDRESS OWNERNAME PRINCIPAL INTEREST PENALTY OTHER TOTAL LIEN STATUS
11000600_2001 1 1 1 1 1 1 1 1 1
11000600_2002 1 1 1 1 1 1 1 1 1
11000600_2003 1 1 1 1 1 1 1 1 1
11000600_2004 1 1 1 1 1 1 1 1 1
11000600_2005 1 1 1 1 1 1 1 1 1
11000600_2006 1 1 1 1 1 1 1 1 1
知道这里可能出什么问题吗?由于某种原因,当我尝试使其恢复正常时,我也失去了一个观察...
这是一个使用base Rreshape
函数并应用于@MrFlick的示例数据的解决方案。这避免了必须先将melt
数据dcast
转换为“宽”格式。
reshape(data2, direction = "wide",
idvar = c("brt_id", "ADDRESS", "OWNERNAME"),
timevar = "year")
现在,关于您的警告:@MrFlick向您展示了使用“ reshape”包进行此操作的方法(为什么不包含“ reshape2”?最好保持更新!)但是,他并没有在回答中真正解释警告。
第一个警告基本上是告诉您您尝试放入“值”列中的变量(度量变量)是不同的类型(某些可能是字符,其他可能是因素,其他可能是数字)。在这种特殊情况下,“ ADDRESS”和“ OWNERNAME”(因子)与剩余列中的数值一起放入同一列中,因此会出现错误。@MrFlick的建议将那些列视为键,即使它们可能不是键也可以解决该问题。
第二个警告是通常在ID组合不唯一时收到的警告。如果您的数据像此处的示例数据一样,并且您遵循@MrFlick的建议,那么您应该可以。否则,您将需要添加另一列以使ID变量唯一,以避免dcast
自动将length
其用作其fun.aggregate
功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句