假设我有 5 个国家/地区 10 年内的分数,例如:
mydata<-1:3
mydata<-expand.grid(
country=c('A', 'B', 'C', 'D', 'E'),
year=c('1980','1981','1982','1983','1984','1985','1986','1987','1988','1989'))
mydata$score=sapply(runif(50,0,2), function(x) {round(x,4)})
library(reshape)
mydata<-reshape(mydata, v.names="score", idvar="year", timevar="country", direction="wide")
> head(mydata)
year score.A score.B score.C score.D score.E
1 1980 1.0538 1.6921 1.3165 1.7434 1.9687
6 1981 1.4773 1.6479 0.3135 0.6172 0.7704
11 1982 0.8748 1.3704 0.2788 1.6306 1.7237
16 1983 1.1224 1.1340 1.7684 1.3352 0.4317
21 1984 1.5496 1.8706 1.4641 0.5313 0.8590
26 1985 1.7715 1.8953 0.6230 0.3580 1.6313
现在,我想创建一个新的变量“period”,如果下一年的分数与前一年的分数有 +/- 0.5 的差异,则该变量为 1;如果情况不成立,则该变量为 0。我想为所有 5 个国家这样做。如果能够识别 period = 1 的国家/地区年份并将此信息显示在表格中,那就太好了。
> head(mydata)
year score.A score.B score.C score.D score.E period.A period.B ...
1 1980 1.0538 1.6921 1.3165 1.7434 1.9687 NA NA
6 1981 1.4773 1.6479 0.3135 0.6172 0.7704 0 ....
11 1982 0.8748 1.3704 0.2788 1.6306 1.7237 1
16 1983 1.1224 1.1340 1.7684 1.3352 0.4317 0
21 1984 1.5496 1.8706 1.4641 0.5313 0.8590 0
26 1985 1.7715 1.8953 0.6230 0.3580 1.6313 0
我非常希望这个要求不过分。我尝试过dist
in the library(proxy)
但我不知道如何将函数限制为观察对而不是整行。太感谢了!!