我需要計算Balassa Index的分母,即每個國家i
我需要計算sum(x_kj)/Xj
每個國家j =/= i
每年(time
),其中k
被認爲是部門和X
是總和跨所有部門。我的數據集看起來像下面操作與r中多發的條件
Country <- c("Italy", "Italy", "Italy", "Korea", "Korea", "Korea", "Norway", "Norway", "Norway")
id <- as.numeric(as.factor(Country))
Time <- c("1990", "1991", "1992","1990", "1991", "1992", "1990", "1991", "1992")
x_k <- c(124,144,135,122,111,231,423,444,441)
X <- c(1000, 1003, 1005, 1409, 1419, 1359, 4250, 4345, 4681)
df <- cbind(Country, id, Time, x_k)
df2 <- cbind(Country, id, Time, X)
df
df2
其中df
是扇區的數據k
和df2
是跨部門的總和數據幀。我使用此代碼:
df$denominator <- NA
for (i in 1990:1992) {
for (j in 1:max(df$id)) {
if (df[,"Time"] == i & df[,"id"]== j) {
if (df[,"id"] != j & df[,"Time"] ==i) {
df[j,"denominator"] <- sum(df[,"x_k"], na.rm=T) /df2[,"X"]
}
}
}
}
它給我的同類50級的警告,即In if (df[, "Time"] == i & df[, "id"] == ... : the condition has length > 1 and only the first element will be used
。
看起來像我失去了一些東西(弄得一團糟,其實),但我沒有得到什麼
編輯
這是我所需要的,使用上面的數據爲例。
對於意大利在1990年我想要的x_k
韓國和挪威於1990年在1990年的總和,超過X
韓國和挪威的總和同樣,韓國在1990年我想要的x_k
挪威和意大利的總和1990年,同年挪威和意大利的總和爲X
。這是我試圖建立的代碼中明顯矛盾的表述。所以:對於1990年的意大利,分母將是(122+423)/(1409+4250)
。對於1990年的韓國,它將是每個國家和每年的(124+423)/(1000+4250)
等等等等。 df = data.frame(df)
df$x_k = as.numeric(df$x_k)
'df [,「Time」]'選擇一個整列。然而,'if'只是比較單個值(參見'ifelse'爲矢量化版本)。這是事情出錯的地方... – konvas
我無法看到如何在我寫的內容中包含ifelse – Bob