我有一个长格式的数据框狗,我正在尝试使用 reshape() 函数将其重新格式化为宽格式。目前看起来是这样的:
dogid month year trainingtype home school timeincomp
12345 1 2014 1 1 1 340
12345 2 2014 1 1 1 360
31323 12 2015 2 7 3 440
31323 1 2014 1 7 3 500
31323 2 2014 1 7 3 520
dogid 列是一堆 id,每只狗一个。对于 12 个月,月份列从 1 到 12 变化,从 2014 年到 2015 年。Trainingtype 变化为 1 到 2。每只狗都有一个 timeincomp 值,用于每个月-年-trainingtype 组合,因此每只狗有 48 个条目。家和学校从 1 到 8 不等,每只狗都是恒定的(同一只狗的每个条目都有相同的学校和家)。 comp 中的时间是我的响应变量。
我希望我的 table 看起来像这样:
dogid home school month1year2014trainingtype1 month2year2014trainingtype1
12345 1 1 340 360
31323 7 3 500 520
等(每个月-年-培训类型组合的列)
我应该在重塑中使用哪些参数来实现这一目标?
最佳答案
您可以使用 dcast
包中的函数 reshape2
。更容易理解。公式的左边是保持长的,而右边是变宽的。
fun.aggregate 是在每个案例有超过 1 个数字的情况下应用的函数。如果确定没有重复案例,可以使用 mean
或 sum
dcast(data, formula= dogid + home + school ~ month + year + trainingtype,
value.var = 'timeincomp',
fun.aggregate = sum)
我希望它有效:
dogid home school 1_2014_1 2_2014_1 12_2015_2
1 12345 1 1 340 360 0
2 31323 7 3 500 520 440
关于从长到宽重塑数据 - 了解重塑参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32237554/