如何在R中融化数据帧
我在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
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")