简体   繁体   English

如何将每日数据拟合到月度图中?

[英]How to fit daily data into monthly plot?

I have a very basic Base R plot, which draws two lines of rates from 2020 and 2021 in red and green, grouped monthly.我有一个非常基本的 Base R 图,它以红色和绿色绘制了 2020 年和 2021 年的两条利率线,每月分组。

阴谋

This is the code for it:这是它的代码:

plot(total2020Plot$Rates,
     type = "l",
     col = 3,
     ylim = c(0, 35))
lines(averagePlot$Rates,
      type = "l",
      lty=2,
      col = 2)
grid()

I'd like to add a single line at the bottom of the plot which takes x=0 for all points.我想在图的底部添加一条线,所有点都采用 x=0。 However, this dataset I have is grouped daily.但是,我拥有的这个数据集是每天分组的。 Grouping it by month would result in loss of information and accuracy.按月分组会导致信息和准确性的丢失。 The values are indexes that represent different financial status:这些值是代表不同财务状况的指标:

0 <= X < 20 : in-debt : red 0 <= X < 20:欠债:红色

20 <= X < 50 : poor : orange 20 <= X < 50:差:橙色

50 <= X < 70 : good : yellow 50 <= X < 70:好:黄色

70 <= X < 100 : excellent : green 70 <= X < 100:优秀:绿色

An excerpt of my dataset is the following:我的数据集摘录如下:


> df
   X01Jan2020 X02Jan2020 X03Jan2020 X04Jan2020 X05Jan2020 X06Jan2020 X07Jan2020 X08Jan2020
97          0          0          0          0          0          0          0          0
   X09Jan2020 X10Jan2020 X11Jan2020 X12Jan2020 X13Jan2020 X14Jan2020 X15Jan2020 X16Jan2020
97          0          0          0          0          0          0          0          0

It goes on until X31Dec2020.它一直持续到 X31Dec2020。

I transformed it into a more readable format:我将其转换为更易读的格式:

df_clean <-t(data.frame(df))

> df_clean
              97
X01Jan2020  0.00
X02Jan2020  0.00
X03Jan2020  0.00
X04Jan2020  0.00
X05Jan2020  0.00
X06Jan2020  0.00
X07Jan2020  0.00
X08Jan2020  0.00
X09Jan2020  0.00
X10Jan2020  0.00
X11Jan2020  0.00
X12Jan2020  0.00
X13Jan2020  0.00
X14Jan2020  0.00
X15Jan2020  0.00
X16Jan2020  0.00
X17Jan2020  0.00
X18Jan2020  0.00
X19Jan2020  44.58

The line should look something like this这条线应该看起来像这样

在此处输入图像描述

Does anyone know how I could solve this using Base R?有谁知道我如何使用 Base R 解决这个问题?

Here are the lines of code to generate daily data with a Date column which represents the index I'd like to add (daily not weekly):以下是生成每日数据的代码行,其中包含代表我要添加的索引的日期列(每天而不是每周):

dates<-seq(as.Date("2020/01/01"), by = "day", length.out = 366)
indexes<-cbind(df, dates)

The output is:输出是:

             X97      dates
X01Jan2020  0.00 2020-01-01
X02Jan2020  0.00 2020-01-02
X03Jan2020  0.00 2020-01-03
X04Jan2020  0.00 2020-01-04
X05Jan2020  0.00 2020-01-05
X06Jan2020  0.00 2020-01-06
X07Jan2020  0.00 2020-01-07
X08Jan2020  0.00 2020-01-08
X09Jan2020  0.00 2020-01-09
X10Jan2020  0.00 2020-01-10
X11Jan2020  0.00 2020-01-11
X12Jan2020  0.00 2020-01-12
X13Jan2020  0.00 2020-01-13
X14Jan2020  0.00 2020-01-14
X15Jan2020  0.00 2020-01-15
X16Jan2020  0.00 2020-01-16
X17Jan2020  0.00 2020-01-17
X18Jan2020  0.00 2020-01-18
X19Jan2020  0.00 2020-01-19
X20Jan2020  0.00 2020-01-20
X21Jan2020  0.00 2020-01-21
X22Jan2020  0.00 2020-01-22
X23Jan2020  0.00 2020-01-23
X24Jan2020  0.00 2020-01-24
X25Jan2020  0.00 2020-01-25
X26Jan2020  0.00 2020-01-26
X27Jan2020  0.00 2020-01-27
X28Jan2020  0.00 2020-01-28
X29Jan2020  0.00 2020-01-29
X30Jan2020  0.00 2020-01-30
X31Jan2020  0.00 2020-01-31
X01Feb2020  0.00 2020-02-01
X02Feb2020  0.00 2020-02-02
X03Feb2020  0.00 2020-02-03
X04Feb2020  0.00 2020-02-04
X05Feb2020  0.00 2020-02-05
X06Feb2020  0.00 2020-02-06
X07Feb2020  0.00 2020-02-07
X08Feb2020  2.78 2020-02-08
X09Feb2020  2.78 2020-02-09
X10Feb2020  2.78 2020-02-10
X11Feb2020  2.78 2020-02-11
X12Feb2020  2.78 2020-02-12
X13Feb2020  2.78 2020-02-13
X14Feb2020  2.78 2020-02-14
X15Feb2020  2.78 2020-02-15
X16Feb2020  2.78 2020-02-16
X17Feb2020  2.78 2020-02-17
X18Feb2020  2.78 2020-02-18
X19Feb2020  2.78 2020-02-19
X20Feb2020  2.78 2020-02-20
X21Feb2020  8.33 2020-02-21
X22Feb2020  8.33 2020-02-22
X23Feb2020  8.33 2020-02-23
X24Feb2020  8.33 2020-02-24
X25Feb2020  8.33 2020-02-25
X26Feb2020  8.33 2020-02-26
X27Feb2020  8.33 2020-02-27
X28Feb2020 13.89 2020-02-28
X29Feb2020 25.00 2020-02-29
X01Mar2020 25.00 2020-03-01
X02Mar2020 25.00 2020-03-02
X03Mar2020 25.00 2020-03-03
X04Mar2020 25.00 2020-03-04
X05Mar2020 25.00 2020-03-05
X06Mar2020 37.96 2020-03-06
X07Mar2020 37.96 2020-03-07
X08Mar2020 37.96 2020-03-08
X09Mar2020 37.96 2020-03-09
X10Mar2020 37.96 2020-03-10
X11Mar2020 37.96 2020-03-11
X12Mar2020 37.96 2020-03-12
X13Mar2020 37.96 2020-03-13
X14Mar2020 37.96 2020-03-14
X15Mar2020 37.96 2020-03-15
X16Mar2020 52.78 2020-03-16
X17Mar2020 52.78 2020-03-17
X18Mar2020 85.19 2020-03-18
X19Mar2020 85.19 2020-03-19
X20Mar2020 85.19 2020-03-20
X21Mar2020 85.19 2020-03-21
X22Mar2020 85.19 2020-03-22
X23Mar2020 85.19 2020-03-23
X24Mar2020 85.19 2020-03-24
X25Mar2020 85.19 2020-03-25
X26Mar2020 85.19 2020-03-26
X27Mar2020 85.19 2020-03-27
X28Mar2020 85.19 2020-03-28
X29Mar2020 85.19 2020-03-29
X30Mar2020 85.19 2020-03-30
X31Mar2020 85.19 2020-03-31
X01Apr2020 85.19 2020-04-01
X02Apr2020 85.19 2020-04-02
X03Apr2020 85.19 2020-04-03
X04Apr2020 85.19 2020-04-04
X05Apr2020 85.19 2020-04-05
X06Apr2020 85.19 2020-04-06
X07Apr2020 85.19 2020-04-07
X08Apr2020 85.19 2020-04-08
X09Apr2020 85.19 2020-04-09
X10Apr2020 85.19 2020-04-10
X11Apr2020 85.19 2020-04-11
X12Apr2020 85.19 2020-04-12
X13Apr2020 85.19 2020-04-13
X14Apr2020 85.19 2020-04-14
X15Apr2020 85.19 2020-04-15
X16Apr2020 85.19 2020-04-16
X17Apr2020 85.19 2020-04-17
X18Apr2020 85.19 2020-04-18
X19Apr2020 85.19 2020-04-19
X20Apr2020 85.19 2020-04-20
X21Apr2020 85.19 2020-04-21
X22Apr2020 85.19 2020-04-22
X23Apr2020 85.19 2020-04-23
X24Apr2020 85.19 2020-04-24
X25Apr2020 85.19 2020-04-25
X26Apr2020 85.19 2020-04-26
X27Apr2020 81.48 2020-04-27
X28Apr2020 81.48 2020-04-28
X29Apr2020 81.48 2020-04-29
X30Apr2020 81.48 2020-04-30
X01May2020 81.48 2020-05-01
X02May2020 81.48 2020-05-02
X03May2020 77.78 2020-05-03
X04May2020 77.78 2020-05-04
X05May2020 77.78 2020-05-05
X06May2020 77.78 2020-05-06
X07May2020 77.78 2020-05-07
X08May2020 77.78 2020-05-08
X09May2020 77.78 2020-05-09
X10May2020 77.78 2020-05-10
X11May2020 77.78 2020-05-11
X12May2020 77.78 2020-05-12
X13May2020 85.19 2020-05-13
X14May2020 85.19 2020-05-14
X15May2020 85.19 2020-05-15
X16May2020 85.19 2020-05-16
X17May2020 85.19 2020-05-17
X18May2020 77.78 2020-05-18
X19May2020 77.78 2020-05-19
X20May2020 77.78 2020-05-20
X21May2020 77.78 2020-05-21
X22May2020 77.78 2020-05-22
X23May2020 77.78 2020-05-23
X24May2020 77.78 2020-05-24
X25May2020 77.78 2020-05-25
X26May2020 77.78 2020-05-26
X27May2020 77.78 2020-05-27
X28May2020 77.78 2020-05-28
X29May2020 74.07 2020-05-29
X30May2020 74.07 2020-05-30
X31May2020 74.07 2020-05-31
X01Jun2020 74.07 2020-06-01
X02Jun2020 74.07 2020-06-02
X03Jun2020 74.07 2020-06-03
X04Jun2020 74.07 2020-06-04
X05Jun2020 74.07 2020-06-05
X06Jun2020 74.07 2020-06-06
X07Jun2020 74.07 2020-06-07
X08Jun2020 74.07 2020-06-08
X09Jun2020 74.07 2020-06-09
X10Jun2020 74.07 2020-06-10
X11Jun2020 74.07 2020-06-11
X12Jun2020 74.07 2020-06-12
X13Jun2020 74.07 2020-06-13
X14Jun2020 74.07 2020-06-14
X15Jun2020 74.07 2020-06-15
X16Jun2020 74.07 2020-06-16
X17Jun2020 74.07 2020-06-17
X18Jun2020 74.07 2020-06-18
X19Jun2020 74.07 2020-06-19
X20Jun2020 74.07 2020-06-20
X21Jun2020 74.07 2020-06-21
X22Jun2020 74.07 2020-06-22
X23Jun2020 74.07 2020-06-23
X24Jun2020 74.07 2020-06-24
X25Jun2020 74.07 2020-06-25
X26Jun2020 74.07 2020-06-26
X27Jun2020 74.07 2020-06-27
X28Jun2020 74.07 2020-06-28
X29Jun2020 74.07 2020-06-29
X30Jun2020 74.07 2020-06-30
X01Jul2020 68.52 2020-07-01
X02Jul2020 68.52 2020-07-02
X03Jul2020 68.52 2020-07-03
X04Jul2020 68.52 2020-07-04
X05Jul2020 68.52 2020-07-05
X06Jul2020 68.52 2020-07-06
X07Jul2020 68.52 2020-07-07
X08Jul2020 68.52 2020-07-08
X09Jul2020 68.52 2020-07-09
X10Jul2020 68.52 2020-07-10
X11Jul2020 68.52 2020-07-11
X12Jul2020 68.52 2020-07-12
X13Jul2020 68.52 2020-07-13
X14Jul2020 68.52 2020-07-14
X15Jul2020 68.52 2020-07-15
X16Jul2020 68.52 2020-07-16
X17Jul2020 68.52 2020-07-17
X18Jul2020 68.52 2020-07-18
X19Jul2020 68.52 2020-07-19
X20Jul2020 42.59 2020-07-20
X21Jul2020 42.59 2020-07-21
X22Jul2020 42.59 2020-07-22
X23Jul2020 44.44 2020-07-23
X24Jul2020 41.67 2020-07-24
X25Jul2020 41.67 2020-07-25
X26Jul2020 41.67 2020-07-26
X27Jul2020 41.67 2020-07-27
X28Jul2020 42.59 2020-07-28
X29Jul2020 42.59 2020-07-29
X30Jul2020 64.81 2020-07-30
X31Jul2020 64.81 2020-07-31
X01Aug2020 64.81 2020-08-01
X02Aug2020 64.81 2020-08-02
X03Aug2020 64.81 2020-08-03
X04Aug2020 61.11 2020-08-04
X05Aug2020 61.11 2020-08-05
X06Aug2020 64.81 2020-08-06
X07Aug2020 64.81 2020-08-07
X08Aug2020 64.81 2020-08-08
X09Aug2020 64.81 2020-08-09
X10Aug2020 64.81 2020-08-10
X11Aug2020 24.07 2020-08-11
X12Aug2020 24.07 2020-08-12
X13Aug2020 24.07 2020-08-13
X14Aug2020 24.07 2020-08-14
X15Aug2020 24.07 2020-08-15
X16Aug2020 24.07 2020-08-16
X17Aug2020 24.07 2020-08-17
X18Aug2020 24.07 2020-08-18
X19Aug2020 24.07 2020-08-19
X20Aug2020 24.07 2020-08-20
X21Aug2020 75.93 2020-08-21
X22Aug2020 75.93 2020-08-22
X23Aug2020 75.93 2020-08-23
X24Aug2020 75.93 2020-08-24
X25Aug2020 75.93 2020-08-25
X26Aug2020 75.93 2020-08-26
X27Aug2020 75.93 2020-08-27
X28Aug2020 75.93 2020-08-28
X29Aug2020 75.93 2020-08-29
X30Aug2020 75.93 2020-08-30
X31Aug2020 75.93 2020-08-31
X01Sep2020 75.93 2020-09-01
X02Sep2020 75.93 2020-09-02
X03Sep2020 75.93 2020-09-03
X04Sep2020 75.93 2020-09-04
X05Sep2020 75.93 2020-09-05
X06Sep2020 75.93 2020-09-06
X07Sep2020 75.93 2020-09-07
X08Sep2020 72.22 2020-09-08
X09Sep2020 72.22 2020-09-09
X10Sep2020 72.22 2020-09-10
X11Sep2020 72.22 2020-09-11
X12Sep2020 72.22 2020-09-12
X13Sep2020 72.22 2020-09-13
X14Sep2020 72.22 2020-09-14
X15Sep2020 72.22 2020-09-15
X16Sep2020 72.22 2020-09-16
X17Sep2020 72.22 2020-09-17
X18Sep2020 72.22 2020-09-18
X19Sep2020 72.22 2020-09-19
X20Sep2020 72.22 2020-09-20
X21Sep2020 72.22 2020-09-21
X22Sep2020 72.22 2020-09-22
X23Sep2020 72.22 2020-09-23
X24Sep2020 72.22 2020-09-24
X25Sep2020 72.22 2020-09-25
X26Sep2020 72.22 2020-09-26
X27Sep2020 72.22 2020-09-27
X28Sep2020 70.37 2020-09-28
X29Sep2020 70.37 2020-09-29
X30Sep2020 70.37 2020-09-30
X01Oct2020 70.37 2020-10-01
X02Oct2020 70.37 2020-10-02
X03Oct2020 70.37 2020-10-03
X04Oct2020 70.37 2020-10-04
X05Oct2020 70.37 2020-10-05
X06Oct2020 70.37 2020-10-06
X07Oct2020 70.37 2020-10-07
X08Oct2020 70.37 2020-10-08
X09Oct2020 70.37 2020-10-09
X10Oct2020 70.37 2020-10-10
X11Oct2020 70.37 2020-10-11
X12Oct2020 70.37 2020-10-12
X13Oct2020 70.37 2020-10-13
X14Oct2020 59.26 2020-10-14
X15Oct2020 59.26 2020-10-15
X16Oct2020 59.26 2020-10-16
X17Oct2020 59.26 2020-10-17
X18Oct2020 59.26 2020-10-18
X19Oct2020 59.26 2020-10-19
X20Oct2020 59.26 2020-10-20
X21Oct2020 59.26 2020-10-21
X22Oct2020 59.26 2020-10-22
X23Oct2020 59.26 2020-10-23
X24Oct2020 59.26 2020-10-24
X25Oct2020 59.26 2020-10-25
X26Oct2020 59.26 2020-10-26
X27Oct2020 59.26 2020-10-27
X28Oct2020 57.41 2020-10-28
X29Oct2020 57.41 2020-10-29
X30Oct2020 57.41 2020-10-30
X31Oct2020 57.41 2020-10-31
X01Nov2020 57.41 2020-11-01
X02Nov2020 57.41 2020-11-02
X03Nov2020 57.41 2020-11-03
X04Nov2020 57.41 2020-11-04
X05Nov2020 57.41 2020-11-05
X06Nov2020 57.41 2020-11-06
X07Nov2020 57.41 2020-11-07
X08Nov2020 57.41 2020-11-08
X09Nov2020 57.41 2020-11-09
X10Nov2020 57.41 2020-11-10
X11Nov2020 57.41 2020-11-11
X12Nov2020 57.41 2020-11-12
X13Nov2020 57.41 2020-11-13
X14Nov2020 87.04 2020-11-14
X15Nov2020 87.04 2020-11-15
X16Nov2020 87.04 2020-11-16
X17Nov2020 87.04 2020-11-17
X18Nov2020 87.04 2020-11-18
X19Nov2020 87.04 2020-11-19
X20Nov2020 87.04 2020-11-20
X21Nov2020 87.04 2020-11-21
X22Nov2020 87.04 2020-11-22
X23Nov2020 87.04 2020-11-23
X24Nov2020 87.04 2020-11-24
X25Nov2020 87.04 2020-11-25
X26Nov2020 87.04 2020-11-26
X27Nov2020 87.04 2020-11-27
X28Nov2020 87.04 2020-11-28
X29Nov2020 87.04 2020-11-29
X30Nov2020 87.04 2020-11-30
X01Dec2020 87.04 2020-12-01
X02Dec2020 87.04 2020-12-02
X03Dec2020 87.04 2020-12-03
X04Dec2020 87.04 2020-12-04
X05Dec2020 87.04 2020-12-05
X06Dec2020 87.04 2020-12-06
X07Dec2020 87.04 2020-12-07
X08Dec2020 87.04 2020-12-08
X09Dec2020 87.04 2020-12-09
X10Dec2020 87.04 2020-12-10
X11Dec2020 87.04 2020-12-11
X12Dec2020 87.04 2020-12-12
X13Dec2020 87.04 2020-12-13
X14Dec2020 87.04 2020-12-14
X15Dec2020 87.04 2020-12-15
X16Dec2020 87.04 2020-12-16
X17Dec2020 87.04 2020-12-17
X18Dec2020 87.04 2020-12-18
X19Dec2020 87.04 2020-12-19
X20Dec2020 87.04 2020-12-20
X21Dec2020 87.04 2020-12-21
X22Dec2020 87.04 2020-12-22
X23Dec2020 87.04 2020-12-23
X24Dec2020 87.04 2020-12-24
X25Dec2020 87.04 2020-12-25
X26Dec2020 87.04 2020-12-26
X27Dec2020 87.04 2020-12-27
X28Dec2020 87.04 2020-12-28
X29Dec2020 87.04 2020-12-29
X30Dec2020 87.04 2020-12-30
X31Dec2020 87.04 2020-12-31

The data is too long and I know you will not be able to copy it, so here is a line of code for you to generate random data and you can add the "Date" column (daily) using the code above.数据太长,我知道您将无法复制它,所以这里有一行代码供您生成随机数据,您可以使用上面的代码添加“日期”列(每天)。

runif(366, min=0, max=100)

As for the monthly data with a month Date column:至于带有一个月 Date 列的月度数据:

monthlyData<-data.frame(c(26.16797, 20.55221, 23.20694, 20.55221, 19.54575, 17.29945, 18.1017, 17.72246,  16.46803, 17.70787, 17.51825, 19.76455))
colnames(monthlyData)[1]<-"Rates"
months2020<-seq(as.Date("2020-01-01"), as.Date("2020-12-01"), by="months")
monthlyData["Month"]<-months2020

Output is the following:输出如下:

      Rates      Month
1  26.16797 2020-01-01
2  20.55221 2020-02-01
3  23.20694 2020-03-01
4  20.55221 2020-04-01
5  19.54575 2020-05-01
6  17.29945 2020-06-01
7  18.10170 2020-07-01
8  17.72246 2020-08-01
9  16.46803 2020-09-01
10 17.70787 2020-10-01
11 17.51825 2020-11-01
12 19.76455 2020-12-01

You have some issues with your code.您的代码有一些问题。 For example you create a Date object and then convert it to characters by using cbind instead of data.frame .例如,您创建一个 Date 对象,然后使用cbind而不是data.frame将其转换为字符。 Fixing that gives:修复给出:

str(indexes)
# 'data.frame': 366 obs. of  2 variables:
#  $ X97  : num  0 0 0 0 0 0 0 0 0 0 ...
#  $ dates: Date, format: "2020-01-01" "2020-01-02" "2020-01-03" "2020-01-04" ...
str(monthlyData)
# 'data.frame': 12 obs. of  2 variables:
#  $ Rates: num  26.2 20.6 23.2 20.6 19.5 ...
#  $ Month: Date, format: "2020-01-01" "2020-02-01" "2020-03-01" "2020-04-01" ...

Now we need to create groups for X97:现在我们需要为 X97 创建组:

group <- cut(indexes$X97, breaks=c(0, 20, 50, 70, 100), right=FALSE)
table(group)
# group
#   [0,20)  [20,50)  [50,70) [70,100) 
#       59       36       64      207 

And colors:和颜色:

clrs <- c("red", "darkorange", "yellow", "darkgreen")

Now plot:现在绘制:

plot(Rates~Month, monthlyData, ylim=c(0, 28), type="l")
points(indexes$dates, rep(0, 366), pch=15, col=clrs[as.numeric(group)])

阴谋

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM