2016-03-02 62 views
0
Data:- 

Date  Value 
2010 Q1  x 
2011 Q4  x 
2010 Q1  x 
2010 Q3  x 
2015 Q2  x 
2016 Q1  x 
2015 Q1  x 
2013 Q4  x 
2012 Q3  x 

我需要计算单个年份中的点数并最终绘制它们。所以我写了一个代码来完成这项工作,但是它涉及硬编码循环范围。计算R中值的实例

Code:- 

require(zoo) 
year=count="" 
for (i in 2009:2016){ 
    year=c(year,i+1) 
    count=c(count,length(data[which(data$Date>i & data$Date<i+1),1])) 
} 
year=year[2:length(year)] 
count=count[2:length(count)] 
plot(year,count) 

Output:- 
year "2010" "2011" 2012" "2013" "2015" "2016" 
count "3" "1" "1" "1" "2""1" 

我在寻找基本上两件事的帮助。首先是我如何推广代码,其次是我可以替代连接方法,因为我总是需要删除代码末尾的每个向量的第一个元素。谢谢。

+5

'table(data $ Date)'给出了你的输出结果,如果你只需要一年,我就不会真正理解你的数据结构。它看起来像你的示例数据中的日期是一个字符串(一年四分之一),但你把它作为一个数字年只在循环中 – rawr

+0

@rawr日期类'yearqtr',因此我试着比较它,它的工作。要使用表格方法,我需要首先分离出一年,然后使用它。它以任何方式工作。谢谢。 – Meesha

+1

所以你使用动物园包?请注意你的问题中的任何额外的软件包 – rawr

回答

2

这是我会怎么做(有一些示例值):

date <- c(2010, 2010, 2010, 2011, 2012, 2012, 2013, 2013, 2013) 
value <- rep('x', times = 9) 
dat <- data.frame(date, value) 
dates = unique(dat$date) 
count <- c() 
for(i in 1:length(dates)){ 
    n <- length(which(dat$date == dates[i])) 
    count[i] <- n 
} 
output <- data.frame(dates, count) 

如果你的数据“日期”字段,你不想要的,你可以使用超过一年的其他值gsub或其他一些预先分离出来的方法。

+4

'data.frame(table(date))' – rawr

+0

这很好,我不知道那个功能。 – Bird