重塑R中的data.frame

时间:2013-12-19 13:52:18

标签: r dataframe reshape

我得到了一个温度数据帧:我每小时都会以摄氏温度为单位,所以我得到了一个像这样的csv文件:

   Day     Hour Temperature
11/10/2013  9:00    6
11/10/2013  10:00   11
11/10/2013  11:00   13
11/10/2013  12:00   6
11/10/2013  13:00   8
12/10/2013  9:00    7
12/10/2013  10:00   8
12/10/2013  11:00   11
12/10/2013  12:00   18
12/10/2013  13:00   12
13/10/2013  9:00    15
13/10/2013  10:00   8
13/10/2013  11:00   11
13/10/2013  12:00   16
13/10/2013  13:00   9

我正在尝试在R中对其进行重新排序,以便每天更改标题文本:

  Day       9:00   10:00 11:00 12:00 13:00
11/10/2013    6      11    13    6     8
12/10/2013    7       8    11   18    12
13/10/2013   15       8    11   16     9

我尝试了几种cbind,sapply和unique的组合,但我不知道它们是否是重新排序data.frame的正确R元素。有什么想法,建议吗? 非常感谢

1 个答案:

答案 0 :(得分:2)

这是您的数据作为数据框架。

temperatures <- read.table(
  text = "   Day     Hour Temperature
  11/10/2013  9:00    6
  11/10/2013  10:00   11
  11/10/2013  11:00   13
  11/10/2013  12:00   6
  11/10/2013  13:00   8
  12/10/2013  9:00    7
  12/10/2013  10:00   8
  12/10/2013  11:00   11
  12/10/2013  12:00   18
  12/10/2013  13:00   12
  13/10/2013  9:00    15
  13/10/2013  10:00   8
  13/10/2013  11:00   11
  13/10/2013  12:00   16
  13/10/2013  13:00   9",
  header = TRUE
)

以下是Roland使用dcast建议的解决方案。

library(reshape2)
dcast(temperatures, Day ~ Hour, value.var = "Temperature")

仅供参考,您正在“重塑”数据,而不是“重新排序”它(这意味着更改行顺序但保留列相同;请使用sortplyr::arrange


使用基数R:

reshape(
  temperatures, 
  direction = "wide", 
  idvar     = "Day", 
  timevar   = "Hour", 
  v.names   = "Temperature"
)