2017-02-14 9 views
1

Предположим, у меня есть фрейм данных с 6 столбцами (все они являются неупорядоченными факторами).порядок n фазовых переменных в data.frame (r)

  teacher$TC001Q01NA  TC026Q01NA  TC026Q02NA  TC026Q04NA  TC026Q05NA  TC026Q06NA 
1     <NA>    <NA>    <NA>    <NA>    <NA>    <NA> 
2     Female Strongly agree Strongly agree Strongly disagree Strongly agree Strongly disagree 
3     Male    Agree    Agree   Disagree    Agree   Disagree 
4     Female    Agree    Agree   Disagree    Agree    Agree 
5     Female    Agree    Agree Strongly disagree Strongly agree Strongly disagree 
6     <NA>    <NA>    <NA>    <NA>    <NA>    <NA> 
7     <NA>    <NA>    <NA>    <NA>    <NA>    <NA> 
8     Female Strongly agree    Agree Strongly disagree    Agree    Agree 
9     <NA>    <NA>    <NA>    <NA>    <NA>    <NA> 
10     <NA>    <NA>    <NA>    <NA>    <NA>    <NA> 

Я хочу сделать столбцы 2-6 в качестве упорядоченных переменных факторов. Я знаю, как это сделать по отдельности для каждой переменной: df_new$TC026Q01NA <- as.ordered(df_new$TC026Q01NA)

Но как это сделать для всех переменных в одной (двух) строке кода?

+3

'lapply' будет вашим другом, я думаю –

+1

Мы можем сделать' df_new [2: 6] <- lapply (df_new [2: 6], функция (х) as.ordered (x)) ' – akrun

+0

@akrun благодарит вас за комментарий! Не могли бы вы объяснить, почему ваш код держит df_new как data.frame, но код lapply (df_new [2: 6], as.ordered) преобразует его в список? –

ответ

1

Мы можем использовать tidyverse

library(tidyverse) 
df_new %>% 
     mutate_at(2:6, as.ordered) 
Смежные вопросы