В кадре данных из 4 столбцов я ищу элегантный способ получить 3 списка, которые содержат имена из столбца 1, если максимум той строки, в которой находится это имя, находится соответственно в столбце 2, 3 или 4.
первый столбец содержит имена параметров, столбец 2 - результат теста Шапиро на необработанных данных параметра х столбец 3, результат теста шапиро преобразованных данных log10 для параметра х столбца 4, результат теста шапиро пользовательского преобразованиядается пользователем для параметра x
, если это данные:
Parameter xval xlog10val xcustomval
1 FWS.Range 0.62233371 0.9741614 0.9619065
2 FL.Red.Range 0.48195980 0.9855781 0.9643206
3 FL.Orange.Range 0.43338087 0.9727243 0.8239867
4 FL.Yellow.Range 0.53554943 0.9022795 0.9223407
5 FL.Red.Gradient 0.35194524 0.9905047 0.5718224
6 SWS.Range 0.46932823 0.9487955 0.9825318
7 SWS.Length 0.02927791 0.4565962 0.7309313
8 FWS.Fill.factor 0.93764311 0.8039806 0.0000000
9 FL.Red.Total 0.22437754 0.9655873 0.9923307
ВОПРОС: как получить список, который сообщает мне все имена параметров, где xlog10val является наибольшим изтри столбца (xval, xlog10val, xcuxtomval)
подробное объяснение, возможно, игнорировать.....
список 1, строки, где xval является наибольшим значением, должен выглядеть следующим образом: 'FWS.Fill.factor'
, поскольку это единственная строка, в которой xval
имеет наибольшее количество баллов
список 2 - это список всех строк, где xlog10val - максимальное значение, и, следовательно, должен содержать имена параметров, где xlog10val - максимум этой строки:
'FWS.Range', 'FL.Red.Range', 'FL.Orange.Range',
'FL.Red.Gradient', 'FWS.Fill.factor'
и список 3 остальныхимен
Я пробовал что-то вроде
df$Parameter[which(df$xval == max(df[ ,2:4]))]
, но это дает integer(0)
результаты.
РЕДАКТИРОВАТЬ
, чтобы уточнить: Давайте начнем с просмотра столбца 2 (xval).В строке мне нужно проверить, является ли xval максимумом из 3 столбцов;xval, xlog10val, xcustomval, если это так, добавьте параметр в строке THAT в список списка xval_is_the_max_of_3_columns
Затем мы делаем ту же строку PER для xlog10val.Если xlog10val в строке i является максимумом столбцов 2: 4, добавьте имя этой строки в список xlog10val_is_the_max_of_3_columns.
Чтобы сделать DF:
df <- data.frame(Parameter = c('FWS.Range', 'FL.Red.Range', 'FL.Orange.Range', 'FL.Yellow.Range', 'FL.Red.Gradient','SWS.Range','SWS.Length','FWS.Fill.factor','FL.Red.Total'),
xval = c(0.622333705577588,0.481959800402278,0.433380866119736,0.535549430820635,0.351945244290616,0.469328232931424,0.0292779051823701,0.93764311477813,0.224377540663707),
xlog10val = c( 0.974161367853916,0.985578135386898,0.97272429360688,0.902279501804112,0.990504657326703,0.94879549470406,0.45659620937997,0.803980592920426,0.965587334461157),
xcustomval = c(0.961906534164457,0.964320569400919,0.823986745004031,0.922340716468745,0.571822393107348,0.982531798077881,0.73093132928955,0,0.992330722386105))