r语言 - mutate() 在这里做什么。我不明白



没有cs背景的自学编码员。似乎我总是遇到这样的问题,我不明白我使用的整洁诗句函数背后发生了什么。我需要有人以一种我能理解的方式解释为什么这不起作用。

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

我理解这段代码的意思是将df2的列4:9除以名为weight的列,该列也在df2中

我得到这个错误:

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

我已经看了df2的大小。我不知道怎么回事。

类(df2)"tbl_df""tbl""data.frame"Dim (df2) = 52 × 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
)

我从一个df1创建了df2。W有42021行。我将这些行按州分组,得到52行。mutate()似乎将df2分解为df1,并将其视为df1。w。我怎么让它工作?

在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)) 

发生错误可能是因为'weight'作为对象可能已经在全局环境中作为原始对象的一部分创建了

最新更新