【问题标题】:ordering n factor variables in data.frame(r) [duplicate]在data.frame(r)中排序n因子变量[重复]
【发布时间】:2017-02-14 19:18:45
【问题描述】:

假设我有 6 列的数据框(它们都是无序因子)。

          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 &lt;- as.ordered(df_new$TC026Q01NA)

但是如何在一(两)行代码中对所有变量执行此操作?

【问题讨论】:

  • lapply 会成为你的朋友,我猜
  • 我们可以df_new[2:6] &lt;- lapply(df_new[2:6], function(x) as.ordered(x))
  • @akrun 谢谢你的评论!请您解释一下,为什么您的代码将 df_new 保留为 data.frame,但代码 lapply(df_new[2:6], as.ordered) 将其转换为列表?
  • [] 确保 &lt;- 的 lhs 上的结构已恢复,data.frame 是具有相同数量元素的 list

标签: r dataframe


【解决方案1】:

我们可以使用tidyverse

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多