我有一个长格式的数据框狗,我正在尝试使用 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 个数字的情况下应用的函数。如果确定没有重复案例,可以使用 meansum

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/

10-12 20:49