如何将第一列中的因子转换为数据类型

问题描述:

我有关于如何格式化要在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使用它们,然后选择在情节我想的时间,以避免重复

+0

目前还不清楚你希望将这些列转换为什么样的数据类型 - 我猜测'dat1'的POSIXct和'mean_hour'的数值是?您是否还在使用'dat1'作为您尝试阴谋的x轴? – aku

+0

对不起,我失败了。 dat1必须是一个数据类型 mean_hour数字 我想任何数据类型至极ggplot2读取,我可以在X轴(例如因子类型不允许更改)进行更改。 是的,dat1是x轴,mean_hour是y轴的 –

+0

您可以添加您用于在ggplot中创建绘图的代码吗?这可能有助于更清楚地了解你想要做什么。 – aku

您可以在该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")