2

给定的数据框值为

     Group          year       Value
     A              2010       17
     A              2011       18
     F              2010        8
     F              2011        9

我想把它转换成

          Year      A      F  
          2010     17      8
          2011     18      9

有没有简单的解决方案来解决这个问题

4

2 回答 2

4
library('reshape2')

df <- read.table(text="     Group          year       Value
     A              2010       17
     A              2011       18
     F              2010        8
     F              2011        9", header = TRUE)

dfc <- dcast(df, year ~ Group )
于 2012-06-15T11:13:51.357 回答
3

尽管语法可能令人困惑,但我仍然发现 base R 中的 reshape 很有用。使用 gauden 提供的 df

reshape_df <- reshape(df,dir="wide",idvar="year",timevar="Group")
colnames(reshape_df) <- c("year","A","F")

将数据从“长”格式转换为“宽”。通常,时间变量成为列名,但在这种情况下,我们寻找“A”和“F”。因此,语法要求 timevar 为“组”。

于 2012-06-15T12:43:20.233 回答