如何在R中融化数据帧

如何在R中融化数据帧,r,R,我在R中有以下数据帧,这是时间序列预测的结果 Jun Jul Aug 1 2616.540 2616.363 2388.369 我希望这个数据帧的格式如下 Month 1 2616.54 2 2616.36 3 2388.36 我尝试了melt,但它没有给我预期的输出 创建一些要使用的数据: tim <- data.frame(2616, 2617, 2388) colnames(tim) <- c("Jun", "Jul", "Au

我在R中有以下数据帧,这是时间序列预测的结果

       Jun      Jul      Aug
1 2616.540 2616.363 2388.369
我希望这个数据帧的格式如下

   Month
1  2616.54
2  2616.36
3  2388.36

我尝试了
melt
,但它没有给我预期的输出

创建一些要使用的数据:

tim <- data.frame(2616, 2617, 2388)
colnames(tim) <- c("Jun", "Jul", "Aug")
您可以使用
melt
功能,然后仅选择要保留的列。以下代码:

library(dplyr)
library(reshape2)
melt(tim, value.name = "Month") %>% select(Month)
产生:

  Month
1  2616
2  2617
3  2388
或者,在不使用dplyr的情况下:

melt(tim, value.name = "Month")[2]
也会产生完全相同的输出:

  Month
1  2616
2  2617
3  2388
如果不需要使用
melt()
,base R的转置函数也可以工作,如果不是更高效的话:

t(tim)
    [,1]
Jun 2616
Jul 2617
Aug 2388
这可能会奏效:

melt(DF, value.name = "Month")[c("Month")]

确实不需要
melt
或任何额外的R包。基本R的
堆栈
就足够了

stack(df)[, -2, drop = F]
#    values
#1 2616.540
#2 2616.363
#3 2388.369
试试这个

(dat <- ts(c(2616.540, 2616.363, 2388.369), frequency = 12))
#       Jan      Feb      Mar
#1 2616.540 2616.363 2388.369

data.frame(Month = dat)
#      Month
# 1 2616.540
# 2 2616.363
# 3 2388.369

(dat我们可以使用
基本R
中取消列出
,并将其转换为
数据帧

data.frame(Month = unlist(df, use.names = FALSE))
#   Month
#1 2616.540
#2 2616.363
#3 2388.369
数据
df您期望得到什么?数据帧的格式如上所述。哦,对不起,我误读了。我以为您已经得到了它,并且不喜欢它。:)您可以展示您尝试使用melt的代码吗?为什么不使用
t(df)
?当我运行上述脚本时,它会给我以下错误
使用inds\u组合中的Jun、Jul、Aug作为id变量错误(.vars,ind_list):位置必须介于0和n之间
您是否使用了
restrape2
软件包中的
melt()
函数?是的,我使用了完全相同的软件包这是创建数据框的方式
df您可以调用
dput(df)
并将结果结构粘贴到这里吗?
data.frame(Month = unlist(df, use.names = FALSE))
#   Month
#1 2616.540
#2 2616.363
#3 2388.369
df <- structure(list(Jun = 2616.54, Jul = 2616.363, Aug = 2388.369), 
 .Names = c("Jun", 
 "Jul", "Aug"), class = "data.frame", row.names = "1")