【问题标题】:r mutate_each function is deprecatedr mutate_each 函数已弃用
【发布时间】:2017-07-13 20:50:24
【问题描述】:

我使用了 tidyverse 包中的函数 mutate_each,我收到一条消息,该函数已被弃用。我想使用其他未弃用的函数来更改字段类型。

以下是我目前如何使用 mutate_each 的可重现示例。

library(tidyverse)

set.seed(123)

df <- data.frame(FirstName = sample(LETTERS[1:2],size=3, replace=TRUE),
             LastName = sample(LETTERS[3:6],size=3, replace=TRUE),
             StartDate =  c("1/31/2000","2/1/2000","3/1/2000"),
             EndDate =   c("1/31/2010","2/10/2011","3/1/2016"),
             stringsAsFactors = FALSE)
str(df)

df %>% mutate_each(funs(as.factor(as.character(.))), 
               c(FirstName:LastName)) %>% 
   mutate_each(funs(as.Date(., format = "%m/%d/%Y",
                       origin = "1899-12-30")), 
          c(StartDate:EndDate))

`mutate_each()` is deprecated.
Use `mutate_all()`, `mutate_at()` or `mutate_if()` instead.
To map `funs` over a selection of variables, use `mutate_at()`...etc

我玩过 mutate_all()、mutate_at() 和 mutate_if(),但没有运气。

【问题讨论】:

  • 试试mutate_at(vars(LastLast:StartDate), funs(as.factor(as.character(.))))
  • 感谢您在这个方向上推动我

标签: r each tidyverse dplyr


【解决方案1】:

使用 @Chi Pak 的 cmets,函数 mutate_at 可用于替换函数 mutate_each

library(tidyverse)

set.seed(123)

df <- data.frame(FirstName = sample(LETTERS[1:2],size=3, replace=TRUE),
         LastName = sample(LETTERS[3:6],size=3, replace=TRUE),
         StartDate =  c("1/31/2000","2/1/2000","3/1/2000"),
         EndDate =   c("1/31/2010","2/10/2011","3/1/2016"),
         stringsAsFactors = FALSE)

t1 <- df %>% mutate_each(funs(as.factor(as.character(.))), 
                     c(FirstName:LastName )) %>% 
  mutate_each(funs(as.Date(., format = "%m/%d/%Y",
                       origin = "1899-12-30")), 
          c(StartDate:EndDate))

t2 <- df %>% mutate_at(vars(FirstName:LastName),
                   funs(as.factor(as.character(.)))) %>% 
  mutate_at(vars(StartDate:EndDate),
        funs(as.Date(as.character(.),
                     format = "%m/%d/%Y", origin = "1899-12-30")))

identical(t1,t2)
[1] TRUE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多