【问题标题】:Plotting measurements over time in R [closed]在 R 中随时间绘制测量值 [关闭]
【发布时间】:2021-09-27 05:20:51
【问题描述】:

我正在尝试在 R 中创建一个图,以显示随着时间的推移手术后的结果。我想在术前、术后 1 个月、术后 6 个月等时绘制某个数据点。这是一个示例数据框:

dat <- data.frame(Preop=c(-2,0.5,-0.25,1.5), PO_1M=c(-1.5,0.2,-0.1,1.0), PO_6M=c(-1.2,0.1,-0.05,0.5), PO_1Y=c(-1.0,0.05,0,0.25))
dat

理想情况下,x 轴将标记时间(术前、术后 1 个月等),y 轴将具有当时的值。数据应该从正方向或负方向收敛于 y=0 附近,我想象一个看起来像这样的图:

我的实际数据框也有许多缺失值,因此需要以某种方式对此进行解释。如果有人可以使用 ggplot 或基本 R 绘图函数帮助解决这个问题,我将不胜感激。非常感谢!

【问题讨论】:

    标签: r dataframe ggplot2


    【解决方案1】:

    您的数据应该进行重组。使用 tidyr 包来帮助将列变成行。然后使用ifelse 逻辑将您的列名转换为月数。我将预操作分配到零个月。

    library(tidyverse)
    dat2<-dat %>% tidyr::pivot_longer(cols=Preop:PO_1Y)
    
    dat2$nummonths<-ifelse(dat2$name=='Preop',0,
                 ifelse(dat2$name=='PO_1M',1,
                        ifelse(dat2$name=='PO_6M',6,
                                      ifelse(dat2$name=='PO_1Y',12,NA))))
    
    
    
    ggplot(dat2, aes(nummonths,value))+geom_point()+theme_dark()
    

    【讨论】:

    • 不错的第一个答案。 OP 可能不希望 x 轴连续。对他们有什么建议,如果他们将其保持为分类轴,如何确保订单保持预期?
    • P.S.顺便说一句,保持 tidyverse 语法,使用 mutate(... = case_when ...) 稍微简化了那些嵌套的 if else 语句
    • 非常感谢 - 成功了!
    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多