Я пытаюсь сделать точечный график процентных ставок FOMC / FED.
Я копирую http://lenkiefer.com/2016/06/22/make-a-dotplot/, но безуспешно
Это дает мне Ошибкав check_names_df (i, x): объект 'x' не найден
Я изо всех сил пытаюсь понять части цикла for.В частности, значения, которые мы хотим, чтобы длина была.Интересно, может кто-нибудь объяснить это или дать мне другие более простые альтернативы:
for (i in 1:length(d6[x==xlist[xx]]$rate) ) and
for (j in 1:d6[x==xlist[xx] ]$count[i]) and
if (d6[x==xlist[xx]]$count[i]>0)
Вот полный код:
library(ggplot2)
library(scales)
library(readxl)
library(tidyverse)
library(data.table)
d6<-read_excel("jun2018.xlsx", sheet = "June2018")
d6<-d6 %>% gather(x, count, 2:5)
После того, как данные приведены в таблицу, в ней есть три столбца.Один соответствует скорости (скорость), один соответствует горизонту (х), а другой соответствует количеству точек (количество).В качестве примера это выглядит так:
rate x count
1.750 2018 1
2.000 2018 2
2.125 2018 6
2.375 2018 5
2.625 2018 NA
1.750 2019 1
2.000 2019 2
2.125 2019 5
2.375 2019 6
2.625 2019 NA
1.750 2020 1
2.000 2020 4
2.125 2020 2
2.375 202O 7
2.625 2020 NA
1.750 Longer Run 1
2.000 Longer Run 4
2.125 Longer Run 2
2.375 Longer Run 7
2.625 Longer Run NA
xlist<-unique(d6$x) #get a unique list of horizon values appearing in the FOMC projection table (2018,2019,2020,Longer Run)
df<-data.frame(rate=numeric(),x=numeric())
for (xx in 1:length(xlist)) { #loop through unique x values (2018, 2019, 2020 and Longer Run)
for (i in 1:length(d6[x==xlist[xx]]$rate) ){ #create a dot for each observation
for (j in 1:d6[x==xlist[xx] ]$count[i]) { #count along each row
if (d6[x==xlist[xx]]$count[i]>0) { #do something if count is greater than 0
myc<-j #set up a counter for total number of dots in a row (j corresponds to the number of dots in a row)
#if number in row is odd start at zero
#if number in row is even start at 1⁄2 0.4 = 0.2 around zero
df1<- data.frame(rate=d6[x==xlist[xx]]$rate[i],x=ifelse(d6[x==xlist[xx]]$count[i] %% 2 ==1, ifelse(myc %% 2 ==1,xx+(-1)^myc * (myc-1)*0.04,xx+(-1)^myc * (myc)*0.04), xx-.02+(-1)^myc * (myc)*0.04) )
df<-rbind(df,df1) }}}}
Спасибо