Я пытаюсь выполнить сравнение по каждой строке данных, а затем извлечь строку из другой таблицы на основе результата сравнения. Если индекс, который должен быть просмотрен, больше, чем длина таблицы поиска, тогда необходимо выполнить расчет. Вот что у меня есть. В таблице я итерация является Indicators
и выглядит следующим образомR compose datatable using ifelse statment
Row, Val.A, Val.B
1, 30, 20.0
2, 3, 40.0
3, 1, 100.0
...
таблице Я отрываясь строки из это Loading
и выглядит следующим образом:
Index, Zone.A, Zone.B, Zone.C, Zone.D, Zone.E
1, 10.0, 20.0, 1.00, 23.0, 34.5
2, 20.0, 40.0, 10.0, 34.5, 54.0
3, 40.0, 100.0, 100.0, 67.8, 98.2
...
10, 10.0, 10.0, 10.0, 10.0, 10.0
То, что я пытаюсь сделать, это использовать ifelse()
или apply()
для этой проблемы, но он не работает. Цель состоит в том, чтобы найти строку в таблице Loading
, которая соответствует значению Val.A
в таблице Indicators
и выполнить расчет, когда в Loading
нет данных. Код, который я пытаюсь использовать для этого является следующее:
max.index <- max(Loading[,1])
result <- ifelse(Indicators$Val.A < max.index,
Loading[[Indicators$Val.A,2:6]],
Loading[[max.index,2:6]] * Indicators$Val.A
)
Используя данные показали результат цель Indicators
будет:
Zone.A, Zone.B, Zone.C, Zone.D, Zone.E
300.0, 300.0, 300.0, 300.0, 300.0
40.0, 100.0, 100.0, 67.8, 98.2
10.0, 20.0, 1.00, 23.0, 34.5
первая строка находится вне доступные строки в таблице Loading
, поэтому они вычисляются, но другие строки Indicators
имеют значения, содержащиеся в таблице Loading
, поэтому эти строки просто выглядят вверх. Спасибо за любую помощь, которую вы можете предоставить. R часто меня путает с его итерационными и векторными операциями.
Is not 'Loading [[max.index, 2: 6]] * Индикаторы $ Val.B = 200', а не 300, как в вашем примере ?? – jlhoward
Извините, опечатка исправлена. –
Отредактировал мой ответ, чтобы быть последовательным. – jlhoward