【发布时间】:2018-08-29 15:52:53
【问题描述】:
我正在尝试编写一个 for 循环,该循环可以将数据帧重新组织到表中以进行发布,例如在excel中。
这是我的问题的数据数据的小样本:
df <- data.frame(ST = c("NY", "NJ", "PA", "NY", "NJ", "PA"),
YR = c(2010, 2010, 2010, 2011, 2011, 2011),
X = c(.25, .24, .23, .24, .23, .22))
我想制作一个表格,在“州”列中列出每个州一次,每年作为标题为“X 年”的行名,每个 X 值在适当的年份下。在这种情况下,它看起来像这样,减去“...”:
状态 | 2010 流行 | 2011流行音乐
纽约 ....25 ....24
新泽西州.......24.......23
PA ....23 ....22
我有大约十二年和所有州的数据,所以我可以通过为每年制作一个数据框、重命名列名、绑定列和消除重复的 ST 列来费力地做到这一点。但是,我的直觉是,有一种更有效的方法可以做到这一点。希望能帮助您思考这个问题。谢谢!
【问题讨论】:
-
试试
spreadspread(df, YR, X) -
这被称为“重塑”,特别是“从长到宽的重塑”。为此,Base R 有一个名为
reshape的函数。其他包如tidyr具有“更友好”的功能用于相同目的(如tidyr::spread)。