【问题标题】:What is mutate() doing here. I don't understandmutate() 在这里做什么。我不明白
【发布时间】:2021-06-04 14:22:04
【问题描述】:

这里是自学编码,没有 cs 背景。似乎我一直遇到这样的问题,我不了解我使用的 tidy verse 函数在幕后发生了什么。我需要有人解释为什么这不能以我能理解的方式工作。

我正在尝试运行此代码: df2.p<- df2 %>% mutate(across(4:9,~./weight))

我将这段代码理解为“将 df2 的 4:9 列除以 df2 中名为 weight 的列”

我收到此错误:

错误:mutate() 输入 ..1 有问题。 x 输入 ..1 无法回收到大小 52。 ℹ 输入..1(function (.cols = everything(), .fns = NULL, ..., .names = NULL) ...。 ℹ 输入..1 的大小必须是 52 或 1,而不是 42021。

我查看了 df2 的大小。不知道发生了什么。

类(df2)“tbl_df”“tbl”“data.frame” 暗淡(df2)是 52 x 10

创建 df2 的代码是:

df2<- df1.w %>% 
  group_by(state) %>% 
  summarise(weight.s= sum(weight, na.rm= TRUE),
            native.s= sum(Native, na.rm= TRUE),
            asian.s= sum(Asian, na.rm= TRUE),
            black.s= sum(Black, na.rm= TRUE),
            pacisland.s= sum(`Pacific Islander`, na.rm= TRUE),
              middle.s= sum(`Middle Eastern`, na.rm= TRUE),
              white.s= sum(White, na.rm= TRUE),
              raceo.s= sum(`Race Other`, na.rm= TRUE), 
            na.rm= TRUE
              )

我从具有 42021 行的 df1.w 创建了 df2。我按州对这些行进行分组以达到 52 行。似乎 mutate() 正在取消组合 df2 并以某种方式将其视为 df1.w 。我如何让它发挥作用?

【问题讨论】:

  • 你能不能显示packageVersion('dplyr') 可以试试df2 %&gt;% ungroup %&gt;% mutate(across(4:9,~./weight)) 或在summarise 中指定.groups = 'drop'
  • packageVersion('dplyr') [1] '1.0.4'
  • 我也使用1.0.4,它可以很好地处理这些数据mtcars %&gt;% group_by(am) %&gt;% summarise(across(everything(), sum)) %&gt;% mutate(across(4:7, ~ ./carb))
  • 不肯定我正在正确使用 .groups= 'drop' 我只是将它添加到我的 df2 代码的末尾吗? ``` white.s= sum(White, na.rm= TRUE), raceo.s= sum(Race Other, na.rm= TRUE), na.rm= TRUE, .groups = 'drop') `` ` 这导致了同样的错误。
  • 我会尝试使用 mtcars 进行复制,看看能否让它工作

标签: r dplyr


【解决方案1】:

在 OP 的帖子中,summarise 没有在“重量”上执行 sum,因此该列不存在于输出“df2”中,因为summarise 仅返回汇总列和分组列.我们可以使用acrosseverything 在所有列上执行sum,然后执行mutate

library(dplyr)
df1.w %>%
   group_by(state) %>% 
   summarise(across(everything(), sum, na.rm= TRUE)) %>% 
   mutate(across(4:9,~./weight)) 

错误可能是因为作为对象的“权重”可能已在全局环境中创建为原始对象的一部分

【讨论】:

    猜你喜欢
    • 2022-11-16
    • 2021-08-07
    • 1970-01-01
    • 2021-02-27
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多