【问题标题】:Performing the Same mutate on all variables in a data frame对数据框中的所有变量执行相同的变异
【发布时间】:2018-10-30 15:55:57
【问题描述】:

我有一个包含 28 个变量的数据框,我想用相同的函数对同一数据框中的每个变量进行变异。例如,为数据框中的每个变量添加一个额外的列,其中新列是变量的日志。例如,如果我有

dataframe <- data.frame(X=data1, Y=data2, Z=data3)

我想要一个包含 X Y 和 Z 以及 log(X)、log(Y) 和 log(Z) 的新数据框。这很容易使用

mutate(dataframe, log(X)); mutate(dataframe(log(Y))

等,但对于 28 个变量(以及每个变量的多个转换 - 我也想获得每个变量的 sqrt 和 ^2),这有点太多了。我知道 mutate_all 的存在,但由于某种原因,当我尝试使用它时,它会替换所有变量而不是添加新变量。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以使用mutate_all 并在funs 中指定后缀,以便将其创建为新列。否则,将用函数的输出替换原来的

    dataframe %>%
            mutate_all(funs(log = log(.))
    

    【讨论】:

      【解决方案2】:

      base R 选项将是

      df <- head(iris[1:2])
      df[paste("log", names(df), sep = "_")] <- log(df)
      df
      #  Sepal.Length Sepal.Width log_Sepal.Length log_Sepal.Width
      #1          5.1         3.5         1.629241        1.252763
      #2          4.9         3.0         1.589235        1.098612
      #3          4.7         3.2         1.547563        1.163151
      #4          4.6         3.1         1.526056        1.131402
      #5          5.0         3.6         1.609438        1.280934
      #6          5.4         3.9         1.686399        1.360977
      

      【讨论】:

        猜你喜欢
        • 2016-12-09
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多