У меня есть матрица, и мне нужно найти индекс, который соответствует следующим условиям:
1.Впервые значение больше 90 (first90)
2. Индекс для столбца, соответствующего первому вхождению нулевого значения значения после первого 90 и остальных записей в столбце, равен нулю.Индекс первого появления всех оставшихся столбцов = 0 после первого появления x> значение
Например, в df.ex строки, соответствующие этим условиям, равны 2 и 4. Правильный индекс столбца равен 5 для строк 2 и 4 для строки 4.
Строки 1 и 3 имеют записи более 90, но некоторые столбцов справа от них отличны от нуля (30 в строках 1, 20 и 49 в строке 3).
Получил первую часть, используя max col, борясь со второй частью.
Любые идеи оценили.
df.ex=matrix(c(
0,57,92,0,30,0,
190,99,30,100,0,0,
0,91,0,0,20,49,
15,121,0,0,0,0),
nrow=4,ncol=6,byrow=T)
first.oc<-max.col(df.ex > 90, "first")
Обновление: отредактирована матрица. Сделать это немного яснее (слишком долго смотрел на это). Я ищу индекс столбца после первого значения больше 90 (есть) и где остальные записи строки равны нулю. В слегка измененном примере, для строки 4, col 2> 90, я ищу способ найти индекс для col 3 (0, за которым следуют последовательные 0).
Каков ожидаемый результат для вашего примера? –
Привет, вектор индексов столбцов. Их можно комбинировать со строками для подмножества матрицы. – RVNorman
Вы ищете логический вектор, который идентифицирует строки, в которых выполняются условия, или вектор с номером столбца в каждой строке, который удовлетворяет вашим условиям (и, предположительно, что-то вроде NA для строк, где условия не выполняются)? – ulfelder