如何将第一列中的因子转换为数据类型
问题描述:
我有关于如何格式化要在ggplot中使用的列数据类型的问题。如何将第一列中的因子转换为数据类型
我有一个变量,我称为“DAT1”,这是由一个字符
dat1 <- c("2017-07-14 18:00:00", "2017-07-14 19:00:00","2017-07-14 20:00:00","2017-07-14 21:00:00", "2017-07-14 22:00:00", "2017-07-14 23:00:00")
dat1=as.matrix(dat1)
> class(dat1)
"matrix"
> class(dat1[,1])
"character"
的矩阵“mean_hour”是另一个变量,它是数字型的矩阵
mean_hour <- c(132,134,432,233,564,345)
mean_hour=as.matrix(mean_hour)
> class(mean_hour)
[1] "matrix"
> class(mean_hour[,1])
[1] "numeric"
然后我做了DAT1和mean_hour一个data.frame:
med_horaria_plot <- data.frame(dat1,mean_hour)
这data.frame住这种方式:
> med_horaria_plot
dat1 mean_hour
1 2017-07-14 18:00:00 132
2 2017-07-14 19:00:00 134
3 2017-07-14 20:00:00 432
4 2017-07-14 21:00:00 233
5 2017-07-14 22:00:00 564
6 2017-07-14 23:00:00 345
> class(med_horaria_plot[,1])
[1] "factor"
> class(med_horaria_plot[,2])
[1] "numeric"
> class(med_horaria_plot)
[1] "data.frame"
这是version--全data.frame较小的要大得多,当我在ggplot绘制,在x轴的日期都叠加
我怎样才能改变类型这些列的,这样我可以在ggplot使用它们,然后选择在情节我想的时间,以避免重复
答
您可以在该dat1
列转换为POSIXct
(由ggplot接受两个日期格式之一)直截了当的方式:
med_horaria_plot$dat1 <- as.POSIXct(med_horaria_plot$dat1, format = "%Y-%m-%d %H:%M:%S")
然后绘制像往常一样,为ggplot往往需要自己来处理的POSIXct
数据标签相当不错:
ggplot() +
geom_line(data = med_horaria_plot, aes(x = dat1, y = (mean_hour)),group=1,linetype=1)
如果您仍然希望更改标签,你可以尝试scale_x_datetime()
:
ggplot() +
geom_line(data = med_horaria_plot, aes(x = dat1, y = (mean_hour)),group=1,linetype=1) +
scale_x_datetime(date_labels = "%b %d")
目前还不清楚你希望将这些列转换为什么样的数据类型 - 我猜测'dat1'的POSIXct和'mean_hour'的数值是?您是否还在使用'dat1'作为您尝试阴谋的x轴? – aku
对不起,我失败了。 dat1必须是一个数据类型 mean_hour数字 我想任何数据类型至极ggplot2读取,我可以在X轴(例如因子类型不允许更改)进行更改。 是的,dat1是x轴,mean_hour是y轴的 –
您可以添加您用于在ggplot中创建绘图的代码吗?这可能有助于更清楚地了解你想要做什么。 – aku