Mutate_all кроме некоторых столбцов - PullRequest
0 голосов
/ 20 апреля 2020

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

Я нашел этот код в Stackoverflow, который, кажется, делает свое дело:

df = data.frame(a = 1:10, b = 21:30)
dplyr::mutate_all(df, lag)
    a  b
1  NA NA
2   1 21
3   2 22
4   3 23
5   4 24
6   5 25
7   6 26
8   7 27
9   8 28
10  9 29

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

1 Ответ

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

Взгляните на mutate_at или mutate_if

library(dplyr)
df = tibble(a = LETTERS[1:10], b = 21:30,c=31:40)

#exclude column a
df %>% 
  mutate_at(vars(-("a")),lag)
#> # A tibble: 10 x 3
#>    a         b     c
#>    <chr> <int> <int>
#>  1 A        NA    NA
#>  2 B        21    31
#>  3 C        22    32
#>  4 D        23    33
#>  5 E        24    34
#>  6 F        25    35
#>  7 G        26    36
#>  8 H        27    37
#>  9 I        28    38
#> 10 J        29    39
#only column b
df %>% 
  mutate_at(c("b"),lag,4)
#> # A tibble: 10 x 3
#>    a         b     c
#>    <chr> <int> <int>
#>  1 A        NA    31
#>  2 B        NA    32
#>  3 C        NA    33
#>  4 D        NA    34
#>  5 E        21    35
#>  6 F        22    36
#>  7 G        23    37
#>  8 H        24    38
#>  9 I        25    39
#> 10 J        26    40
#only character column
df %>% 
  mutate_if(is.character,lag,3)
#> # A tibble: 10 x 3
#>    a         b     c
#>    <chr> <int> <int>
#>  1 <NA>     21    31
#>  2 <NA>     22    32
#>  3 <NA>     23    33
#>  4 A        24    34
#>  5 B        25    35
#>  6 C        26    36
#>  7 D        27    37
#>  8 E        28    38
#>  9 F        29    39
#> 10 G        30    40

Создано в 2020-04-20 пакетом prex (v0.3.0)

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