R重新组织数据框

时间:2012-02-01 21:53:14

标签: r

我是R的新手,我认为我需要做的就是重塑,融化和演员功能。我做了一些阅读,但无法弄清楚如何去做。

我有一个这样的数据框:

)
server1, 01/01/2012, Memory, 27.200000, 27.490000, 28.560000, 29.300000
server1, 01/01/2012, disk , 2.330000, 22.380000, 7.580000, 2.440000
server1, 01/01/2012, CPU 0.470000, 36.500000, 12.230000, 0.350000
server1, 01/01/2012, interface 2.330000, 22.380000, 7.580000, 2.440000

我喜欢将此数据框转换为此类数据,以便R可以轻松读取和绘制此数据:

server1, 01/01/2012:01:00, 27.200000, 2.330000,0.470000, 2.330000  
server1, 01/01/2012:02:00, 27.49, 22.38, 36.50, 22.38
server1, 01/01/2012:03:00, 28.56, 7.58, 12.23, 7.58
server1, 01/01/2012:04:00, 29.30, 2.44, 0.35, 2.44
  1. 将ExtractedDate与Hour1合并(例如,如果标题显示为Hour1,则截止日期应为“01/01/2012 01:00”

  2. 将metrictype转换为标题(标题应为:将每小时数据放入列而不是行。

  3. 有人可以帮我这个吗?

    更新=======

    玩融化和演员,我的事情变得非常接近。我做了这三个命令:

     1. x <- data.frame(read.table("out.txt", sep=",", header=T))
     2. y <- melt(x, id=c("Hostname", "Date", "Met"))
     3. yy <- cast(y, Hostname + Date + variable ~ Mete)
    

    我的输出如下:

         Hostname 
    
     1  server1  01/29/2012    Hour1       0.72       2.33     23.76
     2  server1  01/29/2012    Hour2       2.38       2.86     23.82
     3  server1  01/29/2012    Hour3       9.59       6.25     24.85
     4  server1  01/29/2012    Hour4      31.09      18.41     25.87
     5  server1  01/29/2012    Hour5       0.42       1.92     24.24
     6  server1  01/29/2012    Hour6       1.79       2.65     24.31
    

    我现在面临的问题是我必须将日期和变量字段组合在一起。例如,第1行日期字段应该是01/29/2012 01:00,第二行,01/29/2012 02:00等等,如果有人可以帮我这个,那就太棒了。

1 个答案:

答案 0 :(得分:3)

首先使用类似gsub的内容:

yy$variable <- as.integer(gsub('Hour', '', yy$variable))

然后将其转换为POSIX时间格式:

yy $ variable&lt; - paste(yy $ variable,&#39;:00:00&#39;,sep =&#39;&#39;)

将您的日期转换为日期:

yy$Date <- as.Date(yy$Date, format='%m/%d/%Y')

然后将它们混合在一起:

yy$date_time <- as.POSIXct(paste(yy$Date, yy$variable))

我认为使用动物园套餐有一种很好的方式,但我根本不了解它。