我有一个数据框,其中第一列是d/m/y格式的日期,第二列是数值(销售).
我想为一年的每个月创建子集(例如,11/11,12/11等).我尝试了这个答案中建议的代码:使用多个条件对data.frame进行子集化
并且当月度条件施加时它起作用:
subset(sales, format.Date(date, "%m")=="11")
Run Code Online (Sandbox Code Playgroud)
但是invalid 'x' argument
当我添加年份条件时,它返回一个带有错误消息的空子集:
subset(sales, format.Date(date, "%m")=="11" & format.Date(date, "%y")=="11")
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu 10.04上使用R 2.10.1-2,感谢您提供的帮助.
由于您未提供数据集,因此我通过您提供的链接创建了自己的数据集。您的方法对我有用,并且仅当我不满足提供的两个条件(月和年)时,我才会获得空数据集,所以我猜您正在尝试对日期序列(月和年)进行子集化)不存在(但没有您使用的代码就无法确定)。这是我使用的代码:
sales <- read.table(text="2372 Kansas KS2000111 HUMBOLDT, CITY OF ATRAZINE 1.3 05/07/2006
9104 Kansas KS2000111 HUMBOLDT, CITY OF ATRAZINE 0.34 07/23/2006
9212 Kansas KS2000111 HUMBOLDT, CITY OF ATRAZINE 0.33 02/11/2007
2094 Kansas KS2000111 HUMBOLDT, CITY OF ATRAZINE 1.4 05/06/2007
16763 Kansas KS2000111 HUMBOLDT, CITY OF ATRAZINE 0.61 05/11/2009
1076 Kansas KS2000111 HUMBOLDT, CITY OF METOLACHLOR 0.48 05/12/2002
1077 Kansas KS2000111 HUMBOLDT, CITY OF METOLACHLOR 0.3 05/07/2006")
sales$V9 <- as.Date(sales$V9, "%m/%d/%Y")
names(sales)[9] <- 'date'
subset(sales, format.Date(date, "%m")=="05" & format.Date(date, "%y")=="07")
# V1 V2 V3 V4 V5 V6 V7 V8 date
#4 2094 Kansas KS2000111 HUMBOLDT, CITY OF ATRAZINE 1.4 2007-05-06
subset(sales, format.Date(date, "%m")=="05" & format.Date(date, "%y")=="10")
#[1] V1 V2 V3 V4 V5 V6 V7 V8 date
#<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)