【问题标题】:How to create a day trend scatter plot by multiple variables如何通过多个变量创建日趋势散点图
【发布时间】:2021-07-26 14:01:31
【问题描述】:

我正在尝试通过跟踪几个变量来创建散点图。我想知道如何通过跟踪状态来显示当天的趋势。请让我知道任何需要提供的东西。非常感谢你! 数据如下所示。

State Day1 Day2 Day3 Day4
CA    1    5     7    9
NY    10   8    20    90 
VT    4   6    9    10 

【问题讨论】:

    标签: r plot stata


    【解决方案1】:

    基础R

    使用matplot 一次获取所有行。但是数据必须转置,R使用列一阶。

    matplot(t(df1[-1]), type = "l", lty = 1)
    legend("topleft", legend = df1$State, col = 1:3, lty = 1)
    


    ggplot2

    使用包ggplot2,这类问题通常与重塑数据有关。格式应为长格式,数据为宽格式。请参阅this post,了解如何将数据从宽格式重塑为长格式。

    library(ggplot2)
    
    df1 |>
      tidyr::pivot_longer(-State, names_to = "Day") |>
      dplyr::mutate(Day = as.integer(sub("[^[:digit:]]+", "", Day))) |>
      ggplot(aes(Day, value, color = State)) +
      geom_line()
    


    数据

    df1 <- read.table(text = "
    State Day1 Day2 Day3 Day4
    CA    1    5     7    9
    NY    10   8    20    90 
    VT    4   6    9    10 
    ", header = TRUE)
    

    【讨论】:

      【解决方案2】:

      在 Stata 中,您需要一个 long 布局才能正常工作 - 就像在 R 中的 ggplot2 一样。在类似之后

      clear 
      input str2 State Day1 Day2 Day3 Day4
      CA    1    5     7    9
      NY    10   8    20    90 
      VT    4   6    9    10 
      end 
      
      reshape long Day, i(State) j(Time)
      rename Day Whatever 
      encode State, gen(Where)
      xtset Where Time 
      

      您可以查看tslinextline。但是:如果您的真实数据是美国的 50 个州(加上 DC?波多黎各?关岛???),那么您的数据定义了 50?+ 行,可能需要一些策略。

      【讨论】:

        猜你喜欢
        • 2021-07-04
        • 2021-08-10
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        • 2016-07-31
        • 2021-10-03
        • 1970-01-01
        相关资源
        最近更新 更多