#r #variables #recode
Вопрос:
Если бы я хотел создать новые переменные из ранее существовавшего диапазона и изменить их значения, не делая их все по отдельности, каков был бы наилучший подход?
Например, здесь я создаю 1С на основе 1, но перекодирую 2 в нули и т. Д. Однако, как бы я создал 100 новых var одновременно (называя их 1C, 2C, 3C и т.д.) На основе той же логики?
df #r #variables #recode
Вопрос:
Если бы я хотел создать новые переменные из ранее существовавшего диапазона и изменить их значения, не делая их все по отдельности, каков был бы наилучший подход? Например, здесь я создаю 1С на основе 1, но перекодирую 2 в нули и т. Д. Однако, как бы я создал 100 новых var одновременно (называя их 1C, 2C, 3C и т.д.) На основе той же логики? 1C`[df #r #variables #recode
Вопрос:
Если бы я хотел создать новые переменные из ранее существовавшего диапазона и изменить их значения, не делая их все по отдельности, каков был бы наилучший подход? Например, здесь я создаю 1С на основе 1, но перекодирую 2 в нули и т. Д. Однако, как бы я создал 100 новых var одновременно (называя их 1C, 2C, 3C и т.д.) На основе той же логики? 1`==1]<-1 df #r #variables #recode
Вопрос:
Если бы я хотел создать новые переменные из ранее существовавшего диапазона и изменить их значения, не делая их все по отдельности, каков был бы наилучший подход? Например, здесь я создаю 1С на основе 1, но перекодирую 2 в нули и т. Д. Однако, как бы я создал 100 новых var одновременно (называя их 1C, 2C, 3C и т.д.) На основе той же логики? 1C`[df #r #variables #recode
Вопрос:
Если бы я хотел создать новые переменные из ранее существовавшего диапазона и изменить их значения, не делая их все по отдельности, каков был бы наилучший подход? Например, здесь я создаю 1С на основе 1, но перекодирую 2 в нули и т. Д. Однако, как бы я создал 100 новых var одновременно (называя их 1C, 2C, 3C и т.д.) На основе той же логики? 1`==2]<-0 df #r #variables #recode
Вопрос:
Если бы я хотел создать новые переменные из ранее существовавшего диапазона и изменить их значения, не делая их все по отдельности, каков был бы наилучший подход? Например, здесь я создаю 1С на основе 1, но перекодирую 2 в нули и т. Д. Однако, как бы я создал 100 новых var одновременно (называя их 1C, 2C, 3C и т.д.) На основе той же логики? 1C`[df #r #variables #recode
Вопрос:
Если бы я хотел создать новые переменные из ранее существовавшего диапазона и изменить их значения, не делая их все по отдельности, каков был бы наилучший подход? Например, здесь я создаю 1С на основе 1, но перекодирую 2 в нули и т. Д. Однако, как бы я создал 100 новых var одновременно (называя их 1C, 2C, 3C и т.д.) На основе той же логики? 1`==0]<-0
Ответ №1:
Мы можем использовать dplyr::across
и dplyr::recode
:
Представьте, что у нас были следующие данные:
set.seed(123)
df <- setNames(data.frame(1:5,matrix(sample(0:2,25,replace = TRUE),nrow = 5)),c("ID",1:5))
df
ID 1 2 3 4 5
1 1 2 0 0 0 2
2 2 0 2 0 1 0
3 3 0 2 1 0 1
4 4 2 1 2 0 0
5 5 1 0 0 2 0
Мы можем использовать Tidyselect с :
, чтобы указать столбцы. dplyr::recode
принимает ...
аргумент, в котором перечислены <have> = <want>
наборы вещей для перекодирования. Мы можем использовать .names =
аргумент, чтобы указать, как мы хотим, чтобы отображались имена новых столбцов.
library(dplyr)
df %>%
mutate(across(`1`:`5`, ~recode(.,`0` = 0, `1` = 1, `2` = 0),
.names = "{.col}C"))
ID 1 2 3 4 5 1C 2C 3C 4C 5C
1 1 2 1 1 0 0 0 1 1 0 0
2 2 2 1 1 2 0 0 1 1 0 0
3 3 2 1 0 2 2 0 1 0 0 0
4 4 1 2 1 0 1 1 0 1 0 1
5 5 2 0 2 0 2 0 0 0 0 0
Комментарии:
1. Создаются новые переменные во фрейме data.frame. Вам просто нужно назначить результат. Вы можете добавить
-> result
, например, в конец илиresult <-
в начало.2. Хорошо, я изменил первую часть на df<-df%>%, и это, похоже, тоже сработало. Еще раз спасибо вам!