简体   繁体   English

将R中的每月数据转换为每季度数据

[英]Converting monthly data to quarterly in R

I've created a time series running 我创建了一个运行时间序列

debit<-ts(t(data1[7,-1]),start=c(2006,1),freq=12)

then, trying to convert freq=12 to freq=4 using aggregate() 然后,尝试使用aggregate()将freq = 12转换为freq = 4

debitq<-aggregate(debit,nfrequency=4)

I get the message 我收到消息

"Error in FUN(newX[, i], ...) : invalid 'type' (character) of argument"

I've tried to include sum as FUN but doesn't work 我尝试将sum作为FUN包括在内,但不起作用

ts: ts:

           Jan       Feb       Mar       Apr       May       Jun       Jul       Aug       Sep       Oct       Nov       Dec
2006  1151.20   1166.29   1176.28   1138.82   1151.16   1156.34   1154.89   1174.97   1201.12   1204.47   1225.78   1236.95 
2007  1228.42   1260.39   1278.27   1285.94   1299.29   1325.34   1289.39   1312.27   1315.92   1307.14   1329.95   1333.75 
2008  1311.34   1345.38   1356.27   1318.32   1337.18   1343.40   1297.92   1319.52   1335.10   1345.36   1374.38   1397.34 
2009  1352.24   1381.00   1398.24   1384.03   1388.31   1434.60   1457.09   1509.95   1488.93   1472.43   1491.84   1497.39 
2010  1457.66   1494.97   1495.12   1585.07   1614.42   1612.41   1601.38   1618.11   1626.17   1644.93   1666.35   1694.04 
2011  1628.99   1671.78   1695.05   1734.68   1746.29   1805.43   1734.45   1768.39   1808.74   1806.56   1833.54   1866.35 
2012  1801.11   1836.04   1855.93   1880.44   1922.03   1970.70   1876.81   1867.30   1904.96   1943.84   1965.22   2007.98 
2013  1925.81   1951.58   1940.53   1940.31   1935.20   1985.58   1957.00   1991.67   1988.86   2022.52   2069.44   2122.81 
2014  2046.30   2067.28   2080.61   2052.56   2122.92   2202.97   2173.18   2169.54   2183.60   2155.37   2208.96   2295.90 
2015  2247.88   2329.62   2441.20   2451.47   2496.23   2583.69   2603.96   2686.29   2734.63   2646.48   2716.92   2793.01 
2016  2749.88   2819.47   2886.70   2799.79   2878.87   2958.64   2956.51   2955.19   3046.91   3032.89   3092.66   3112.94 
2017  3053.35   3134.67   3234.14   3244.51   3253.03   3357.65   3341.38   3404.00   3430.83   3438.48   3493.38   3559.27 
2018  3528.31   3582.15   3636.33   3658.51   3716.71   3754.10   3748.84   3785.66   3779.48   3763.04   3826.74   3877.06 
2019  3808.26   3873.53   3917.95   3878.69   3890.85   3977.99                                                             

dput(): dput():

    V163 = structure(c(1L, 1L, 26L, 1L, 27L, 1L, 15L, 1L, 14L, 
    1L, 4L, 24L, 25L, 23L, 1L, 20L, 13L, 3L, 17L, 1L, 1L, 1L, 
    11L, 10L, 8L, 19L, 7L, 1L, 1L, 9L, 12L, 6L, 1L, 1L, 5L, 18L, 
    22L, 21L, 16L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", " 0,00 ", " 1,32 ", 
    " 1.497,49 ", " 1.826,87 ", " 10,06 ", " 10,80 ", " 122,91 ", 
    " 13,59 ", " 138,09 ", " 151,68 ", " 3,53 ", " 3,96 ", " 3.826,31 ", 
    " 3.977,99 ", " 309,25 ", " 36,67 ", " 399,70 ", " 4,38 ", 
    " 410,42 ", " 455,16 ", " 662,76 ", " 84,00 ", " 843,91 ", 
    " 948,54 ", "($)", "Jun/19"), class = "factor")), class = "data.frame", row.names = c(NA, 
-56L))

traceback(): 追溯():

> traceback()
2: apply(array(c(x[1:nend, ]), dim = c(len, nend/len, ncol(x))), 
       MARGIN = c(2L, 3L), FUN = FUN, ...)
1: aggregate.ts(debit, nfrequency = 4)

sapply(debit,class): sapply(借方,类):

> sapply(debit, class)
   7 
"ts" 

From what I can see my best guess is that you load the data using read.csv or read.table from utils . 从我可以看到的最好的猜测是,您可以使用utils read.csvread.table加载数据。 Instead of NA the original file that you were loading into R contained the empty string "" (the first level of the factor in the dput ), which caused the entire column to be seen as character and turned to factors upon loading. 而不是NA,您要加载到R中的原始文件包含空字符串“”( dput因子的第一级),这导致整个列被视为字符,并在加载时变为因子。 In this case you should do someting like this: 在这种情况下,您应该这样做:

data <- read.csv(<YOURFILE>, <YOURARGUMENTS>, colClasses = "character",
 stringsAsFactors = FALSE) # or read.table(... whichever you are using
data[[1]] <- factor(data[[1]])
for(i in 2:ncol(data)) data[[i]] <- as.numeric(data[[i]])

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

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