0
- 我有一个包含y年以上x个国家/地区的数据集。
- 我想做一定的分析(见下面指出,但是这段代码不是问题)
- 问题:我想对我已经有的代码做了这样的分析:与另一个x国家和y年的其他数据集合在一起。要清楚:我想做分析为每个可能的x国家组合和y年。
,我想,以执行用于数据集的每个版本(说明数据集参见下文)这意味着,作为输出我需要有该代码根据变量id做不同版本的数据集循环,并在每个循环后保存结果
library(stats)
##### the analysis for one dataset ####
d=data.frame(outcome_spring=rep(1,999),outcome_summer=rep(1,999),
outcome_autumn=rep(1,999),outcome_winter=rep(1,999))
o <- lapply(1:999, function(i) {
Alldata_Rainfed<-subset(Alldata, rainfed <= i)
outcome_spring=sum(Alldata$spring)
outcome_summer=sum(Alldata$summer)
outcome_autumn=sum(Alldata$autumn)
outcome_winter=sum(Alldata$winter)
d[i, ] = c(outcome_spring, outcome_summer, outcome_autumn, outcome_winter)
})
combination<-as.data.frame(do.call(rbind, o)) #the output I want is another dataset for each unique dataset
#### the end of the analysis for one dataset ####
希望的输出
相同数量的数据集(在该示例中称为“组合”)作为x个国家和y年之间可能的组合数量。
作为一个例子,假设有以下数据集(实际数据集有达50的意见,15个国家,9岁)
> dput(Alldata)
structure(list(country = c("belgium", "belgium", "belgium", "belgium",
"germany", "germany", "germany", "germany"), year = c(2004, 2005,
2005, 2013, 2005, 2009, 2013, 2013), spring = c(23, 24, 45, 23,
1, 34, 5, 23), summer = c(25, 43, 654, 565, 23, 1, 23, 435),
autumn = c(23, 12, 4, 12, 24, 64, 23, 12), winter = c(34,
45, 64, 13, 346, 74, 54, 45), irrigation = c(10, 30, 40,
300, 288, 500, 996, 235), id = c(1, 2, 2, 3, 4, 5, 6, 6)), datalabel = "", time.stamp = "14 Nov 2016 20:09", .Names = c("country",
"year", "spring", "summer", "autumn", "winter", "irrigation",
"id"), formats = c("%9s", "%9.0g", "%9.0g", "%9.0g", "%9.0g",
"%9.0g", "%9.0g", "%9.0g"), types = c(7L, 254L, 254L, 254L, 254L,
254L, 254L, 254L), val.labels = c("", "", "", "", "", "", "",
""), var.labels = c("", "", "", "", "", "", "", "group(country year)"
), row.names = c("1", "2", "3", "4", "5", "6", "7", "8"), version = 12L, class = "data.frame")
在上面的例子中,我已经做了ID为结合国家和年。这意味着我想使数据集与具有下列ID的组合的所有观察:
- 数据集1_2_3_4_5:IDS 1,2,3,4,5(所以此数据集只错过使用id = 6的观察)
- 数据集1_2_3_4_6:IDS 1,2,3,4,6(但不包括5)
- 数据集1_2:IDS 1,2(但不是所有的其余部分)
- 数据集3_4_5:IDS 3,4,5 (但不是全部)
- ....
等etc ...请注意,我给数据集的名称包含的ID的名称。否则,我很难区分所有不同的数据集。其他名字也很好,只要我能区分数据集!
感谢您的帮助!
编辑:有可能是某些数据集给出任何结果(因为在第二循环中的灌溉使用过环和某些组合可能没有灌溉),但随后的输出应该只是缺少值的数据集
非常感谢你!我在开始的时候遇到了一些麻烦,但我想我已经开始明白了。我将在明天在大学服务器上运行它。希望它有效!我会告诉你!无论如何非常感谢! – user33125
嘿@波!您的解决方案完美运作非常感谢你!你帮了我很多!我问了一个非常小的后续问题:http://stackoverflow.com/questions/40636032/combine-observations-based-on-the-variable-id-if-at-least-5-ids-are-combined也许你也知道这个答案吗?如果不是,非常感谢! – user33125
虽然@Wave,但有一件事我无法解释。我得到以下错误“错误在combn(唯一(Alldata $ id),i):n
user33125