Получить предыдущий уровень порядкового множителя в R - PullRequest
0 голосов
/ 18 сентября 2018

Я, должно быть, что-то упускаю в этом вопросе, потому что это выглядит просто, и у него уже слишком много времени.

Скажем, у нас есть столбец порядкового множителя в кадре данных.Нам нужен новый столбец путем удаления или увеличения исходного столбца на один уровень или категорию.Какой самый быстрый способ?

Данные

col_string <- as.character(c(1:5))
col_factor <- factor(col_string, levels = as.character(c(1:8)), ordered = TRUE)

Желаемое решение:

col_solution <- c(8,1,2,3,4)
df <- cbind(col_string, col_factor, col_solution)
df
     col_string col_factor col_solution
[1,] "1"        "1"        "8"         
[2,] "2"        "2"        "1"         
[3,] "3"        "3"        "2"         
[4,] "4"        "4"        "3"         
[5,] "5"        "5"        "4"

Как в кодеМогу ли я сказать R:

col_solution <- shift down one level of the element in col_factor

изменить для уточнения:

В столбце col_factor есть 8 категорий, хотя есть только представление из 5 из них.Категории упорядочены как 1-2-3-4-5-6-7-8.Если один элемент находится в категории 1, и мы хотим перейти на одну категорию, мы перейдем к категории 8.

1 Ответ

0 голосов
/ 18 сентября 2018
function(myFactor,shift = -1){
    myFactor[] <- (as.numeric(myFactor)-1+shift)(length(levels(myFactor)))+1
    return(myFactor)
}

Немного трудно понять, что делает индексирование.

((x-1) %% y) +1 Дает остаток от x / y, но когда остаток равен 0, он возвращает y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...