在R中按十年排序数据

时间:2016-10-27 04:13:14

标签: r

所以我对R来说还是个新手,我在抓住它时遇到了一些麻烦。我想要做的是将数据分类为几十年,以便我可以分析每十年的平均值。到目前为止,这是我尝试过的:

 fred$decade = cut(as.numeric(format(fred$DATE, "%Y")),breaks=seq(1940, 2020, 10))
  

format.default中的错误(结构(as.character(x),names = names(x),   dim = dim(x),:       无效的'trim'参数

以下是我正在使用的数据的一部分:我正在查看自1948年以来的每月直到2016年1月9日的CPI数据。我希望从那以后得到每十年的平均CPI:

DATE    CPI
8/1/49  23.7
9/1/49  23.75
10/1/49 23.67
11/1/49 23.7
12/1/49 23.61
1/1/50  23.51
2/1/50  23.61
3/1/50  23.64
4/1/50  23.65
5/1/50  23.77
6/1/50  23.88
7/1/50  24.07
8/1/50  24.2

当我使用它时,我总是会收到一条错误消息。我似乎无法弄清楚我做错了什么。我查看了我的数据以确保它没问题。谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("abc@abc.com")); message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("abc@def.com")); message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("ghi@abc.com")) 视为

dput(stsample)

你可以试试像

这样的东西
structure(list(Date = structure(c(8L, 10L, 11L, 12L, 13L, 1L, 
2L, 3L, 4L, 5L, 6L, 7L, 9L), .Label = c("01-01-1950", "02-01-1950", 
"03-01-1950", "04-01-1950", "05-01-1950", "06-01-1950", "07-01-1950", 
"08-01-1949", "08-01-1950", "09-01-1949", "10-01-1949", "11-01-1949", 
"12-01-1949"), class = "factor"), CPI = c(23.7, 23.75, 23.67, 
23.7, 23.61, 23.51, 23.61, 23.64, 23.65, 23.77, 23.88, 24.07, 
24.2)), .Names = c("Date", "CPI"), class = "data.frame", row.names = c(NA, 
-13L))

请注意,中断仅适用于日期的stsample$Date <- as.Date(stsample$Date, "%d-%m-%Y") stsample$year<-as.numeric(format(stsample$Date, "%Y")) stsample$decade = cut(stsample$year, seq(from = 1940, to = 2020, by = 10)) 部分,而不适用于整个对象。如果您有日期时间对象,则可能需要查看year

答案 1 :(得分:2)

你也可以试试这个(用一些随机生成的数据显示输出):

# assuming 40-49 is the decade 40s
fred$DECADE <- 10*as.integer(as.numeric(substring(as.character(fred$DATE), 7, 8)) / 10) 

head(fred)
      DATE      CPI DECADE
1 08/01/49 23.41955     40
2 09/01/49 26.99772     40
3 10/02/49 29.53724     40
4 11/02/49 19.84247     40
5 12/03/49 26.75672     40
6 01/03/50 30.97788     50

# mean value for each DECADE
aggregate(CPI~DECADE, data=fred, FUN=mean)

    DECADE      CPI
1     40 25.31074
2     50 25.27004
3     60 24.72269