У меня есть фрейм данных, содержащий оценки состояния с оценкой 1-7 (в качестве имен столбцов) Каждое наблюдение содержит репрезентативную область (в процентах) для каждой оценки состояния (1-7). Каждая строка должна составлять до 100% для каждого наблюдения.
Я могу вернуть соответствующий рейтинг условий (1-7 из названия столбца) для наивысшего% покрытия, чтобы показать, что большая часть области - это условие x.
Вот мой код для этого:
# Create some data:
set.seed(10)
df <- matrix(round(rbeta(100*7,1,1),digits=1), nc=7)
df <- round(sweep(df, 1, rowSums(df), FUN="/"),digits=1)
colnames(df)<-c(1:7) # Change the column names to reflect condition value
df <- as.data.frame(df)
# Now return the condition corresponding to the highest % coverage
df$maxPercCond <- as.numeric(colnames(df)[max.col(df,ties.method="last")])
df[df == 0] <- NA # Need to keep this as actual data contains NA values
Мой вопрос
Мне нужно вернуть пиковое условие (pkVal
) для каждой строки.
df[c(5,70),]
1 2 3 4 5 6 7 maxPercCond pkVal | pkVal(REQUIRED)
5 0.1 0.2 0.2 0.1 0.2 0.1 NA 5 0.1 | 6
70 0.2 0.2 0.1 0.2 0.1 NA 0.1 4 0.1 | 7
В приведенном выше примере значение pkVal должно равняться 6 и 7 соответственно (в соответствии с моей записью pkVal(REQUIRED)
, чтобы показать, что 6 было наивысшим номинальным условием для первого ряда, а 7 - наивысшим номинальным условием для второго ряда.
Я пробовал вариацию задания maxPerCond
, но меня завязали узлы! Любые предложения / помощь будут приветствоваться:
df$pkVal <- as.numeric(colnames(df)[max.col(df[cbind( 1:nrow(df),
max.col(!is.na(df[,1:7]),"last") )],ties.method="last")])