У меня есть следующие два кадра данных в R
df=data.frame("Z_Frequency"=c(5,10,15,20,25), "Z_Slope2"=c(0,.7,
-0.5,0,.7))
df24<-data.frame("Z_Frequency"=seq(from=min(df$Z_Frequency), to =
max(df$Z_Frequency), by = 1))
Я заполняю значения столбца df24 $ Z_SSLOPE, сравнивая значения df24 $ Z_Frequency и df $ Z_Frequency.если значение df24 $ Z_Frequency идентично значению df $ Z_Frequency, значение столбца df24 $ Z_SSLOPE будет скопировано из df $ Z_Slope2.Я написал следующий код для того же.
df24$Z_SSLOPE<-0
for( i in 1: nrow(df)){ for (j in 1:nrow(df24)) {
if(df24$Z_Frequency[j]==df$Z_Frequency[i]){ df24$Z_SSLOPE[j]<-
df$Z_Slope2[i]} else if(df24$Z_Frequency[j]>df$Z_Frequency[i]&
df24$Z_Frequency[j]<df$Z_Frequency[i+1]){
df24$Z_SSLOPE[j]=df$Z_Slope2[df24$Z_Frequency[j]>df$Z_Frequency[i] &
df24$Z_Frequency[j]<df$Z_Frequency[i+1]]}}}
Ожидаемый результат будет следующим:
Z_Frequency Z_SSLOPE
1 5 0.0
2 6 0.7
3 7 0.7
4 8 0.7
5 9 0.7
6 10 0.7
7 11 -0.5
8 12 -0.5
9 13 -0.5
10 14 -0.5
11 15 -0.5
12 16 0.0
13 17 0.0
14 18 0.0
15 19 0.0
16 20 0.0
17 21 0.7
18 22 0.7
19 23 0.7
20 24 0.7
21 25 0.7
В случае, если значения df24 $ Z_Frequency не находят совпадения в df $ Z_Frequency, значения заполняются следующим доступным совпадением df24$ Z_Frequency.Я получаю следующий вывод.
Z_Frequency Z_SSLOPE
1 5 0.0
2 6 0.0
3 7 0.0
4 8 0.0
5 9 0.0
6 10 0.7
7 11 0.0
8 12 0.0
9 13 0.0
10 14 0.0
11 15 -0.5
12 16 0.0
13 17 0.0
14 18 0.0
15 19 0.0
16 20 0.0
17 21 0.0
18 22 0.0
19 23 0.0
20 24 0.0
21 25 0.7
Первая часть оператора if работает.Однако я не могу обнаружить ошибку в другой части оператора if.Я прошу чью-то помощь.