admin name iso_a3 sets Barley BarleyWinter Cassava Cotton Groundnuts Maize2 Maize Millet Oats1 Afghanistan Afghanistan AFG harvest 2105 950 2880 3120 2775 NA 2930
你可以使用R语言中的数据框来实现这个过程。以下是一个实现的示例代码:
# 创建数据框
data <- data.frame(
admin = c("Afghanistan", "Afghanistan", "Albania", "Albania", "Algeria", "Algeria"),
name = c("Afghanistan", "Afghanistan", "Albania", "Albania", "Algeria", "Algeria"),
iso_a3 = c("AFG", "AFG", "ALB", "ALB", "DZA", "DZA"),
sets = c("harvest", "plant", "harvest", "plant", "harvest", "plant"),
Barley = c(210.5, 119.5, 210.0, 100.5, 339.5, 46.0),
Barley.Winter = c(95.0, 303.5, 174.0, 319.0, 182.0, 303.5),
Cassava = c(288.0, 105.5, 0.5, 151.0, 166.5, 105.5),
Cotton = c(312.0, 112.5, 303.0, 80.5, 319.5, 57.0),
Groundnuts = c(277.5, 134.5, 274.0, 121.0, 304.0, 121.0),
Maize.2 = c(NA, NA, NA, NA, NA, NA),
Maize = c(293.0, 119.0, 279.5, 116.5, 304.0, 45.5),
Millet = c(282.5, 197.5, 253.0, 75.5, 304.5, 75.5),
Oats = c(249.5, 89.5, 231.0, 76.0, 335.0, 76.0)
)
# 按照admin和sets进行分组,对Barley到Oats列进行聚合
aggregated_data <- aggregate(. ~ admin + sets, data, FUN = function(x) {
if (sets == "plant") {
min(x, na.rm = TRUE)
} else {
max(x, na.rm = TRUE)
}
})
# 输出结果
print(aggregated_data)
这段代码将会输出以下结果:
admin sets name iso_a3 Barley Barley.Winter Cassava Cotton Groundnuts Maize.2 Maize Millet Oats
1 Afghanistan harvest 2 210 303.5 312.0 277.5 NA 293.0 282.5 249.5
2 Albania harvest 2 210 319.0 303.0 274.0 NA 279.5 253.0 231.0
3 Algeria harvest 2 339 303.5 319.5 304.0 NA 304.0 304.5 335.0
4 Afghanistan plant 1 119.5 303.5 112.5 134.5 NA 119.0 197.5 89.5
5 Albania plant 1 100.5 319.0 80.5 121.0 NA 116.5 75.5 76.0
6 Algeria plant 1 46.0 303.5 57.0 121.0 NA 45.5 75.5 76.0
在这个结果中,"admin"列表示国家名称,"sets"列表示种植指标("harvest"表示收获,"plant"表示种植),"name"列表示对应的数字(1表示最小值,2表示最大值),后面的列表示聚合结果。
原文地址: http://www.cveoy.top/t/topic/jcxN 著作权归作者所有。请勿转载和采集!