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
我需要计算单个年份的点数并最终绘制它们。所以我编写了一个代码来完成这项工作,但它涉及对循环范围进行硬编码。
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"
我正在寻找基本上两件事的帮助。首先是如何概括代码,其次是我可以替换连接方法,因为我总是需要删除代码末尾的每个向量的第一个元素。感谢。
答案 0 :(得分: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)
如果&#34;日期&#34;您的数据中的字段除了您不想要的年份之外的值,您可以使用gsub或其他方式将事先分离出来。