【问题标题】:Why I cannot save mutate result in r?为什么我不能将变异结果保存在 r 中?
【发布时间】:2021-04-25 20:55:28
【问题描述】:

这应该是一个简单的问题。我尝试在每个组(名称)中对“日期”进行排名,并将排名输出保存为 rank_date。

但是,我一直收到错误“df %>% group_by(name) %>% rank_date %

df = data.frame(name=c("A","A","A","B","C","D"), score = c("03/21/2021", "04/21/2021", "05/21/2021", "06/21/2021","07/21/2021","03/21/2021"))
df$score = as.Date(df$score,"%m/%d/%Y")
df %>% 
    group_by(name)%>% 
  rank_date<-mutate(df, rank=order(score, decreasing=TRUE))

【问题讨论】:

  • 您的变异不正确,即df %&gt;% group_by(name) %&gt;%mutate(rank_date = order(score, decreasing = TRUE))
  • 嗨@akrun,我试过你说的。 “rank_date

标签: r


【解决方案1】:

您应该将最终的对象(应该存储结果)放在开头:

library(dplyr)
df <- data.frame(name=c("A","A","A","B","C","D"), score = c("03/21/2021", "04/21/2021", "05/21/2021", "06/21/2021","07/21/2021","03/21/2021"))
df$score = as.Date(df$score,"%m/%d/%Y")
df <- df %>%
  group_by(name) %>%
  mutate(rank_date = order(score, decreasing = TRUE))

df
#> # A tibble: 6 x 3
#> # Groups:   name [4]
#>   name  score      rank_date
#>   <chr> <date>         <int>
#> 1 A     2021-03-21         3
#> 2 A     2021-04-21         2
#> 3 A     2021-05-21         1
#> 4 B     2021-06-21         1
#> 5 C     2021-07-21         1
#> 6 D     2021-03-21         1

reprex package (v2.0.0) 于 2021-04-25 创建

【讨论】:

  • 类似问题... rank_date 变量没有保存到datafrme?当我运行 names(df) 时,变量不存在...
  • 谢谢@Daniel。如果我们不考虑将其保存到数据框中,它会起作用...
  • 啊,好吧,我认为最终的object(不是variable)应该有名字。只需更改mutate() 中的名称,我将更新示例。
【解决方案2】:

分配应位于顶部 (&lt;-)。如果我们需要更新同一个对象,就赋值给同一个对象'df'

library(dplyr)
df <- df %>% 
   group_by(name) %>%
   mutate(rank_date = order(score, decreasing = TRUE))  %>%
   ungroup

-输出

df
# A tibble: 6 x 3
#  name  score      rank_date
#  <chr> <date>         <int>
#1 A     2021-03-21         3
#2 A     2021-04-21         2
#3 A     2021-05-21         1
#4 B     2021-06-21         1
#5 C     2021-07-21         1
#6 D     2021-03-21         1

或在对象的末尾 (-&gt;)

df %>% 
   group_by(name) %>%
   mutate(rank = order(score, decreasing = TRUE)) %>%
   ungroup -> df

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 2020-12-23
    • 2012-08-20
    相关资源
    最近更新 更多