R - 从长格式转换为长格式的数据,现在想要使用创建的timevar作为因子

时间:2018-03-08 12:19:04

标签: r reshape

我正在处理纵向数据并评估政策的使用超过13个月。为了得到我的x轴上不同月份的一些条形图,我将数据从宽格式转换为长格式。

现在,我的数据集看起来像这样

id month hours
1   1     13
1   2     16
1   3     20
2   1     0
2   2     0
2   3     10

我想,重塑后我可以轻松地使用我新创建的“月”变量作为因子并绘制一些图表。
然而,它没有用,并告诉我它是一个列表或原子向量。将它转化为一个因素并没有成功 - 我迫切需要它作为一个因素。

有人知道如何将其变成一个因素吗?

非常感谢你的帮助!

编辑。

OP的图表代码已发布在评论中。在这里。

library(ggplot2)

ggplot(data, aes(x = hours, y = month)) + geom_density() + labs(title = 'Distribution of hours') 

2 个答案:

答案 0 :(得分:2)

问题似乎出在aesgeom_density只需要x值,如果您稍微考虑一下,y没有意义。您需要x值的密度,因此在垂直轴上,值将是该密度的值,而不是数据集中存在的其他值。

首先,读入数据。

Indirekte_long <- read.table(text = "
id month hours
1   1     13
1   2     16
1   3     20
2   1     0
2   2     0
2   3     10
", header = TRUE)

现在绘制图表。

library(ggplot2)

g <- ggplot(Indirekte_long, aes(hours))
g + geom_density() + labs(title = 'Distribution of hours') 

答案 1 :(得分:2)

# Loading ggplot2
library(ggplot2)

# Placing example in dataframe
data <- read.table(text = "
id month hours
1   1     13
1   2     16
1   3     20
2   1     0
2   2     0
2   3     10
", header = TRUE)

# Converting month to factor
data$month <- factor(data$month, levels = 1:12, labels = 1:12)

# Plotting grouping by id
ggplot(data, aes(x = month, y = hours, group = id, color = factor(id))) + geom_line()

# Plotting hour density by month
ggplot(data, aes(hours, color = month)) + geom_density()

enter image description here