我编写了一个函数,以便可以根据另一列中的值求和列数,但是它不起作用。具体来说,我编写了此函数,以根据year
列中的年值对面板数据集的某些列的值求和。
make_sum<-function(df,year_vector,varname){
datalist = list()
datalist[[1]]<-year_vector
# define the vectors for storage
vector_1<-c()
vector_2<-c()
vector_3<-c()
for (i in 1:length(year_vector)){
vector_1[i]<-sum(df$sum[df$year == year_vector[i]])
vector_2[i]<-sum(df$varname[df$year == year_vector[i]])
}
# vector_3 as the proportion
vector_3<-vector_2/vector_1
# save vectors in the datalist
datalist[[2]]<-vector_1
datalist[[3]]<-vector_2
datalist[[4]]<-vector_3
names(datalist)<-c("year","sum","soc_wel_sum","prop")
return(datalist)
}
但是,当我在year_vector和数据帧上运行该函数时,vector_2
的值为0:
one<-make_sum(panel_1,c(2004:2007),"社会中介服务业")
> one
$year
[1] 2004 2005 2006 2007
$sum
[1] 124477 135157 149316 160921
$soc_wel_sum
[1] 0 0 0 0
$prop
[1] 0 0 0 0
因此,我不确定为什么会这样,因为varname
正确指示:
> panel_1$"社会中介服务业"
[1] 2 8 105 35 44 106 130 2 25 167 16 56 7
[14] 39 495 79 74 112 18 15 4 3 84 12 20 0
[27] 25 58 11 17 8 NA 14 69 8 32 35 39 23
[40] 18 148 44 39 26 47 240 109 87 43 18 3 4
[53] 3 93 10 13 NA 24 30 19 25 11 2 22 79
[66] 21 36 36 34 26 25 170 55 43 14 31 424 97
[79] 185 47 55 4 7 13 75 16 15 NA 53 32 9
[92] 30 8 2 13 69 38 40 25 44 23 39 252 41
[105] 36 10 25 522 139 294 37 39 6 5 24 71 17
[118] 15 NA 37 38 43 45 7