假设,我在 10 年内有 5 个国家/地区的分数,例如:
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
现在,我想创建一个新变量“期间”,如果下一年的得分与上一年的得分相差 +/- 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
但library(proxy)
我不知道如何将函数限制为成对观察而不是整行。太感谢了!!