我有以下ifelse声明:
Years=c(2016, 2021, 2026, 2031, 2035)
if (Year == Years[1]){OD = subset(data,data$YEAR>=Years[1] & data$YEAR <= Years[1]+2)}
if (Year == Years[2]){OD = subset(data,data$YEAR>=Years[2]-2 & data$YEAR <= Years[2]+2)}
if (Year == Years[3]){OD = subset(data,data$YEAR>=Years[3]-2 & data$YEAR <= Years[3]+2)}
if (Year == Years[4]){OD = subset(data,data$YEAR>=Years[4]-2 & data$YEAR <= Years[4]+2)}
if (Year == Years[5]){OD = subset(data,data$YEAR>=Years[5]-1 & data$YEAR <= Years[5])}
Run Code Online (Sandbox Code Playgroud)
我想要一个有效的方法来写这个没有ifelse声明.
小智 5
我不确定用于定义年份下限和上限的规则是什么,但是如何首先创建定义下限和上限的向量:
Years <- c(2016, 2021, 2026, 2031, 2035)
Years.lower <- c(2016, 2021-2, 2026-2, 2031-2, 2035-1)
Years.upper <- c(2016+2, 2021+2, 2026+2, 2031+2, 2035)
Run Code Online (Sandbox Code Playgroud)
然后data根据Years对象中的哪一个Year对应于子集:
OD <- subset(data, data$YEAR>=Years.lower[which(Years==Year)] & data$YEAR <= Years.upper[which(Years==Year)])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |