[英]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.csv
或read.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.