我的R代码将宽数据帧转换为长格式时出了什么问题?

我运行下面RRstudio,目的是宽的数据帧(称为“合并”)转换成一个漫长的。我的R代码将宽数据帧转换为长格式时出了什么问题?

> merged 

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

2017 (A) 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 5844 5356

2017 (P) 5762 5275 5733 5411 5406 4954 5464 5536 5805 5819 5903 5630

以下输出后我:

Description Month RN 

2017 (A) Jan 5980

2017 (P) Jan 5762

2017 (A) Feb 5341

2017 (P) Feb 5275

... ... ...

我曾尝试以下(但没有成功):

library(reshape2) 

merged_long <- melt(data=merged,

id.vars="Description",

variable.name="Month",

value.name="RN")

我收到以下错误信息:

Error: id variables not found in data: Description 

我在做什么错?

回答:

如@Sotos在评论所指出的,在merged数据集的数据rownames需要唯一地识别在熔融数据集的观察。要在融化的数据集中包含rownames,请在代码中添加以下内容。

merged$Description <- rownames(merged) 

然后您的原始代码应该产生预期的结果。

library(reshape2) 

merged_long <- melt(data=merged,

id.vars="Description",

variable.name="Month",

value.name="RN")

回答:

鉴于数据的性质,最简单的方法就是使用melt(as.matrix(...))。如果你的数据已经是一个matrix,显然忽略as.matrix部分。

melt(as.matrix(mydf)) 

您可以使用setNames同时重新命名列:

setNames(melt(as.matrix(mydf)), c("Description", "Month", "RN")) 

# Description Month RN

# 1 2017 (A) Jan 5980

# 2 2017 (P) Jan 5762

# 3 2017 (A) Feb 5341

# .........................

# .........................

# 23 2017 (A) Dec 5356

# 24 2017 (P) Dec 5630

以上是 我的R代码将宽数据帧转换为长格式时出了什么问题? 的全部内容, 来源链接: utcz.com/qa/262752.html

回到顶部