2017-02-14 4 views
1

Angenommen, ich habe Datenrahmen mit 6 Spalten (alle von ihnen sind ungeordnete Faktoren).Reihenfolge n Faktor Variablen in 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> 

Ich möchte Spalten 2-6 als geordnete Faktorvariablen machen. Ich weiß, wie man es separat für jede Variable macht: df_new$TC026Q01NA <- as.ordered(df_new$TC026Q01NA)

Aber wie kann ich dies für alle Variablen in einer (zwei) Zeile Code tun?

+3

'lapply' wird dein Freund sein, ich denke, –

+1

Wir können tun,' df_new [2: 6] <- lapply (df_new [2: 6], Funktion (x) as.ordered (x)) ' – akrun

+0

@akrun danke für den Kommentar! Kannst du bitte erklären, warum hält dein Code df_new als data.frame, aber der Code lapply (df_new [2: 6], as.ordered) verwandelt es in die Liste? –

Antwort

1

Wir verwenden tidyverse

library(tidyverse) 
df_new %>% 
     mutate_at(2:6, as.ordered)