У меня есть фрейм данных, который отсортирован по одному столбцу (цифра c столбец) для назначения ранга. если значение этого столбца равно нулю, то упорядочить фрейм данных на основе другого символьного столбца для тех строк, которые имеют ноль в качестве значения в столбце нумерации c.
Но чтобы присвоить ранг, я должен рассмотреть var2, то есть причина, по которой я сортировал на основе var2, если в var2 есть какие-либо идентичные значения для этих строк, я должен рассмотреть var3, чтобы присвоить ранг. см. строки данных 2 и 3, значения var2 идентичны, в этом случае я должен рассмотреть var3, чтобы присвоить ранг. В случае, если var2 равен нулю, я должен отсортировать столбец var1 (символьный столбец) в алфавитном порядке и присвоить ранг. если var2 - нет рейтинга. см. приведенный ниже фрейм данных.
Ниже фрейм данных отсортирован в порядке убывания столбца var2, но var2 содержит ноль также, если var2 равен нулю. Я должен отсортировать фрейм данных на основе var1 для строк. которые имеют ноль в var2. Мне нужна сортировка по var1 для тех строк, у которых var2 равна нулю, а за ним следует NA в алфавитном порядке по var1.
example:
# var1 var2 var3 rank
# 1 c 556 45 1
# 2 a 345 35 3
# 3 f 345 64 2
# 4 b 134 87 4
# 5 z 0 34 5
# 6 d 0 32 6
# 7 c 0 12 7
# 8 a 0 23 8
# 9 e NA
# 10 b NA
below is my code
df <- data.frame(var1=c("c","a","f","b","z","d", "c","a", "e", "b", "ad", "gf", "kg", "ts", "mp"), var2=c(134, NA,345, 200, 556,NA, 345, 200, 150, 0, 25,10,0,150,0), var3=c(65,'',45,34,68,'',73,12,35,23,34,56,56,78,123))
# To break the tie between var3 and var2
orderdf <- df[order(df$var2, df$var1, decreasing = TRUE), ]
#assigning rank
rankdf <- orderdf %>% mutate(rank = ifelse(is.na(var2),'', seq(1:nrow(orderdf))))
ожидаемый результат - сортировка var1 по алфавиту, если значение var2 равно нулю (для тех строки со значением var2, равным нулю)
expected output:
# var1 var2 var3 rank
# 1 c 556 45 1
# 2 a 345 35 3
# 3 f 345 64 2
# 4 b 134 87 4
# 5 a 0 34 5
# 6 c 0 32 6
# 7 d 0 12 7
# 8 z 0 23 8
# 9 b NA
# 10 e NA