我是R的新手,两周前开始学习。我想列出不同年份的热带气旋数量清单(有些年份没有,因为没有热带气旋),并创建一份清单,列出每年1907 - 2013年的一列和一列热带气旋。 在示例中,我包括1973年的事件列表(1912年之前没有)。
Year Count
1 1912 1
2 1913 1
3 1921 1
4 1940 1
5 1953 1
6 1958 1
7 1959 1
8 1960 1
9 1966 1
10 1969 1
11 1971 1
12 1973 2
我尝试使用for循环和if / else语句,但它不起作用。我收到消息"较长的对象长度不是较短对象长度的倍数"和"条件的长度> 1,只使用第一个元素。"
tc.SP=matrix(0,len.tc.yr,2)
tc.SP[,1]=tc.year.list
for (i in 1:len.tc.yr) #107 yrs (1907-2013)
{
if (tc.SP5.count[,1] == tc.SP[,1]) #tc.SP5.count is various years of TC occ.
{tc.SP[,2]= tc.SP5.count[,2]}
else
{tc.SP[,2]= 0}
}
提前感谢您的帮助。
答案 0 :(得分:2)
当你说列表时,我假设您要创建一个data.frame。我们假设上面的数据位于名为cyclone
的data.frame中。每年创建data.frame的最简单方法就是将其与完整列表合并。例如
cyclone.full <- merge(cyclone, data.frame(Year=1907:2013), all=T)
此处data.frames将自动合并到Year列,因为两个集合都有该列。这将在所有缺失的年份中放置NA值。如果您希望默认值为0,则可以执行
cyclone.full$Count[is.na(cyclone.full$Count)] <- 0
然后哟uget
head(cyclone.full)
# Year Count
# 1 1907 0
# 2 1908 0
# 3 1909 0
# 4 1910 0
# 5 1911 0
# 6 1912 1