我有一个数据集,其中包含许多特征,其中包括面积、降雨量和产量,以及年份列。我想编写一个功能来计算每个(面积、降雨量和产量)的复合年增长率。我有以下功能,但我需要以一种可以使用这些列中的任何一个来计算其 CAGR 的方式对其进行调整:
annual.growth.rate <- function(data){
T1 <- max(data$Year) - min(data$Year)+1
FV <- data[which(data$Year == max(data$Year)),"Area"]
SV <- data[which(data$Year == min(data$Year)),"Area"]
cagr <- ((FV/SV)^(1/T1)) -1
}
我需要调整的功能有问题。
数据样本:
X State Year Season Crop Area Production
1 0 Andaman and Nicobar Islands 2000 Kharif Arecanut 1254 2000
2 1 Andaman and Nicobar Islands 2000 Kharif Other Kharif pulses 2 1
3 2 Andaman and Nicobar Islands 2000 Kharif Rice 102 321
4 3 Andaman and Nicobar Islands 2000 Whole Year Banana 176 641
5 4 Andaman and Nicobar Islands 2000 Whole Year Cashewnut 720 165
6 5 Andaman and Nicobar Islands 2000 Whole Year Coconut 18168 65100000
Rainfall Yield
1 2763.2 1.5948963
2 2763.2 0.5000000
3 2763.2 3.1470588
4 2763.2 3.6420455
5 2763.2 0.2291667
6 2763.2 3583.2232497
行。也许您的功能中缺少print(cagr)
:
annual.growth.rate <- function(data){
T1 <- max(data$Year) - min(data$Year)+1
FV <- data[which(data$Year == max(data$Year)),"Area"]
SV <- data[which(data$Year == min(data$Year)),"Area"]
cagr <- ((FV/SV)^(1/T1)) -1
print(cagr)
}
如果要对多个变量执行此操作,可以在函数内部创建一个 for 循环:
annual.growth.rate <- function(data){
for (i in c("Area", "Rainfall", "Yield")) {
T1 <- max(data$Year) - min(data$Year)+1
FV <- data[which(data$Year == max(data$Year)),i]
SV <- data[which(data$Year == min(data$Year)),i]
cagr <- ((FV/SV)^(1/T1)) -1
print(cagr)}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句