R 使用不同的数字列重塑数据的形状

R 使用不同的数字列重塑数据的形状,r,reshape,R,Reshape,我试图绘制不同的图形,将HPI与中值指数进行比较。首先,我的数据与本例中的数据相同,但没有最后三列,我用以下代码对其进行了重塑,使其中一列包含中间值,另一列包含三个HPI df %>% pivot_wider(names_from = Index, values_from = Value) %>% pivot_longer(starts_with("HPI"), names_to = "Index", values_to = &qu

我试图绘制不同的图形,将HPI与中值指数进行比较。首先,我的数据与本例中的数据相同,但没有最后三列,我用以下代码对其进行了重塑,使其中一列包含中间值,另一列包含三个HPI

 df %>% 

 pivot_wider(names_from = Index, values_from = Value) %>% 
 pivot_longer(starts_with("HPI"), names_to = "Index", values_to = "Value")
现在,我需要其他三列在图形中添加一个置信区间,但我似乎无法使它起作用

这是我的数据的一个例子

df <- tibble::tribble(
  ~Index,    ~Value, ~Operation, ~Month, ~SD, ~lower, ~upper, 
  "HPI1",    0.9,    "Sale", "01/2020", 0.00224245, 0.9788445 ,0.9876349,
  "HPI1",    1.1,    "Rent", "02/2020", 0.00227729, 1.0323418, 1.0412688,
  "HPI2",    0.89,   "Sale", "01/2020", 0.00645641, 1.1494260, 1.1747352,
  "HPI2",    1.12,   "Rent", "02/2020", 0.00645641, 1.1494260, 1.1747352,
  "HPI3",    0.85,   "Sale", "01/2020",0.00732540, 1.1376065, 1.1663221,
  "HPI3",    1.22,   "Rent", "02/2020", 0.00645641, 1.1494260, 1.1747352,
  "Median",  0.91,   "Sale", "01/2020",0.00732540, 1.1376065, 1.1663221,
  "Median",  1.02,   "Rent", "02/2020",0.00732540, 1.1376065, 1.1663221,
  "HPI1",    0.9,    "Sale", "02/2020",0.00224245, 0.9788445 ,0.9876349,
  "HPI1",    1.1,    "Rent", "03/2020", 0.00645641, 1.1494260, 1.1747352,
  "HPI2",    0.89,   "Sale", "02/2020", 0.00227729, 1.0323418, 1.0412688,
  "HPI2",    1.12,   "Rent", "03/2020", 0.00645641, 1.1494260, 1.1747352,
  "HPI3",    0.85,   "Sale", "02/2020",0.00224245, 0.9788445 ,0.9876349,
  "HPI3",    1.22,   "Rent", "03/2020",0.00732540, 1.1376065, 1.1663221,
  "Median",  0.91,   "Sale", "02/2020",0.00227729, 1.0323418, 1.0412688,
  "Median",  1.02,   "Rent", "03/2020",0.00732540, 1.1376065, 1.1663221,
  "HPI1",    0.9,    "Sale", "03/2020", 0.00645641, 1.1494260, 1.1747352,
  "HPI1",    1.1,    "Rent", "04/2020",0.00224245, 0.9788445 ,0.9876349,
  "HPI2",    0.89,   "Sale", "03/2020",0.00732540, 1.1376065, 1.1663221,
  "HPI2",    1.12,   "Rent", "04/2020",0.00227729, 1.0323418, 1.0412688,
  "HPI3",    0.85,   "Sale", "03/2020", 0.00645641, 1.1494260, 1.1747352,
  "HPI3",    1.22,   "Rent", "04/2020",0.00224245, 0.9788445 ,0.9876349,
  "Median",  0.91,   "Sale", "03/2020",0.00227729, 1.0323418, 1.0412688,
  "Median",  1.02,   "Rent", "04/2020",0.00732540, 1.1376065, 1.1663221)

df这可能是一种可行的方法,无需将
pivot\u使用得更广
pivot\u使用得更长


图书馆(dplyr)
图书馆(lubridate)
图书馆(GG2)
#月为日期格式
df%
变异(月=我的(月))
#每月HPI指数的所有情况以及与仅中值数据连接的操作,以便为刻面中线创建单独的数据框
df_hpi%
过滤器(索引!=“中值”)%>%
选择(索引、月份、操作)
#各方面情况的中值数据框架:指数和按月计算的数值
df_med%
过滤器(索引=“中值”)%>%
重命名(数据集=索引)%>%
右联接(df_hpi,by=c(“月”=“月”,“操作”=“操作”))
#仅限HPI数据
df1%
过滤器(索引!=“中值”)
#所有这些都在调用ggplot中
ggplot(df1,aes(月,值,组=指数))+
geom_线()+
几何线(数据=df\U med,aes(color=“Median”))+
平面网格(操作~索引)+
实验室(颜色=空)+
主题(legend.position=“底部”)


由(v2.0.0)创建于2021-04-13我知道您正在尝试这样做:一条线和一条带状线(置信区间)。 但是您列“lower”的值似乎不正确

相反,我使用了“SD”列

库(tidyverse)
图书馆(lubridate)
图书馆(GG2)
df%
突变(月=我的(月),
ymin=值-2*SD,
ymax=值+2*SD)%>%
ggplot()+
geom_线(aes)(
x=月,
y=值,
组=操作,
颜色=操作
)) +
geom_丝带(aes)(
x=月,
ymin=ymin,
ymax=ymax,
组=操作,
填充=操作
),
α=0.3)+
面包(~索引)+
主题灯()+
实验室(x=NULL,y=NULL)

你想画什么?您能描述一下预期的输出图吗:可能是一个包含HPI1-3的四条线和按月(x轴)的中值(y轴)的线图,按操作分面?以及该值的上限和下限的一些指标。下限和上限值与什么有关?它们通常似乎大于或小于
,但似乎没有“括号”
对不起。我只是编造了这些数据,现在回想起来,这些数字毫无意义。下限和上限是置信区间的边界。我需要按索引和操作划分网格,但我也需要中间值作为另一列,这样我就可以为每个HPI+中间值绘制一个图,这很有帮助,建议的解决方案可以在不扩大或延长轴心的情况下管理这一点。没有尝试合并上层或下层数据,因为这在任何情况下似乎有点不协调,如果需要,应该非常自然地流动。