Смещение позиций значений в одном столбце - PullRequest
2 голосов
/ 20 апреля 2020

Это мой первый вопрос, поэтому, пожалуйста, дайте мне знать, если я допустил какие-либо ошибки в запросе.

Я пытаюсь создать фрейм данных, в котором несколько столбцов содержат одинаковые значения в одинаковом порядке, но смещены по позиции. Когда первое значение из каждого столбца перемещается в конец, а все остальное смещается вверх.

Например, я хотел бы преобразовать кадр данных следующим образом:

example = data.frame(x=c(1,2,3,4), y=c(1,2,3,4), z=c(1,2,3,4), w=c(1,2,3,4)

, который выглядит следующим образом

x y z w
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4 

:

x y z w
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3

В новом кадре данных «пик» или # 4 постепенно смещается вверх в строках.

I Вы видели совет о том, как сдвигать столбцы вверх и вниз, а просто заменять оставшиеся значения нулями или NA. Но я не знаю, как сдвинуть столбец вверх и заменить самое нижнее значение тем, что раньше было верхним.

Заранее благодарим за любую помощь.

1 Ответ

0 голосов
/ 20 апреля 2020

В base R мы можем обновить с Map, удалив последовательность элементов при добавлении значений с конца

example[-1] <- Map(function(x, y)  c(tail(x, -y), 
        head(x, y)), example[-1], head(seq_along(example), -1))
example
#  x y z w
#1 1 2 3 4
#2 2 3 4 1
#3 3 4 1 2
#4 4 1 2 3

Или другой параметр embed

example[] <- embed(unlist(example), 4)[1:4, 4:1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...