问题描述
我正在尝试通过跟踪几个变量来创建散点图。我想知道如何通过跟踪状态来显示日趋势。请让我知道需要提供什么。非常感谢你! 数据如下所示。
State Day1 Day2 Day3 Day4
CA 1 5 7 9
NY 10 8 20 90
VT 4 6 9 10
解决方法
基础 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)
,
在 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
您可以查看 tsline
和 xtline
。但是:如果您的真实数据是美国的 50 个州(加上 DC?波多黎各?关岛???),那么您的数据定义了 50?+ 条线,可能需要一些策略。