【问题标题】:R reorganizing the data frameR重组数据框
【发布时间】:2012-02-01 21:53:14
【问题描述】:

我是 R 的新手,我认为我需要做的是能够使用 reshape、melt 和 cast 功能。我做了一些阅读,但不知道如何去做。

我有一个这样的数据框:

)
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转为header(header应该是:把每小时数据放在列而不是行中。

有人可以帮我解决这个问题吗?

更新=======

玩melt和cast,我觉得我已经很接近了。我做了这 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

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

【问题讨论】:

  • 看起来你已经弄清楚了融化/铸造,这本身就不是一件容易的事。下面关于gsub 的答案看起来不错。您还应该查看 lubridate 包,它可以更轻松地处理日期/时间变量。
  • 试试这个:as.POSIXct(paste(yy$Date, yy$variable), format = "%m/%d/%Y Hour%H").

标签: r


【解决方案1】:

首先使用gsub 之类的东西:

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

然后转成POSIX时间格式:

yy$variable

将您的日期转换为日期:

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

然后将它们混合在一起:

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

我认为有一种使用 zoo 包的好方法,但我一点也不了解。

【讨论】:

  • 是的!我忘记了关于:00:00 的重要引用。它现在固定在我的答案中。 ":00:00"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多