当前位置: 首页 > 知识库问答 >
问题:

我可以在添加其他变量的同时为现有变量使用summarise_at吗?

舒斯伯
2023-03-14

假设我有一个分组数据帧:

> mtcars %>% 
+   group_by(cyl) %>% 
+   summarise(blah = mean(disp))
# A tibble: 3 x 2
    cyl  blah
  <dbl> <dbl>
1     4  105.
2     6  183.
3     8  353.

然后假设我要对一些现有变量求和:

> mtcars %>% 
+   group_by(cyl) %>% 
+   summarise_at(vars(vs:carb), sum)
# A tibble: 3 x 5
    cyl    vs    am  gear  carb
  <dbl> <dbl> <dbl> <dbl> <dbl>
1     4    10     8    45    17
2     6     4     3    27    24
3     8     0     2    46    49

但是,如果要同时添加两个摘要命令,则无法:

> mtcars %>% 
+   group_by(cyl) %>% 
+   summarise_at(vars(vs:carb), sum) %>% 
+   summarise(blah = mean(disp))
Error in mean(disp) : object 'disp' not found

在dplyr链中使用group_by()之后,我如何使用SUMMARSE()添加新功能,以及使用SUMMARSE_at(vars(vs:carb),sum)将现有功能相加?

共有3个答案

孔君浩
2023-03-14

我要做的是在第一步中使用mutate_at,这样其他列就不会折叠,然后将summary_atmean一起用于所有列。

library(dplyr) 

mtcars %>% 
   group_by(cyl) %>% 
   mutate_at(vars(vs:carb), sum) %>%
   summarise_at(vars(vs:carb, disp), mean)

#    cyl    vs    am  gear  carb  disp
#  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1     4    10     8    45    17  105.
#2     6     4     3    27    24  183.
#3     8     0     2    46    49  353.
伊温书
2023-03-14

您可以将摘要生成的数据帧与左键联接。

library(dplyr)

data(mtcars)

mtcars %>% 
  group_by(cyl) %>% 
  summarise_at(vars(vs:carb), sum) %>% 
  left_join(mtcars %>% group_by(cyl) %>% summarise(blah = mean(disp)))
#Joining, by = "cyl"
## A tibble: 3 x 6
#    cyl    vs    am  gear  carb  blah
#  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1     4    10     8    45    17  105.
#2     6     4     3    27    24  183.
#3     8     0     2    46    49  353.

公宜春
2023-03-14

我能想到的唯一方法(目前)是在第一个摘要之前立即存储数据,然后运行两个摘要谓词,并将它们连接到分组变量上。例如:

library(dplyr)

grouped_data <- group_by(mtcars, cyl)
left_join(
  summarize(grouped_data, blah = mean(disp)),
  summarize_at(grouped_data, vars(vs:carb), sum),
  by = "cyl")
# # A tibble: 3 x 6
#     cyl  blah    vs    am  gear  carb
#   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1     4  105.    10     8    45    17
# 2     6  183.     4     3    27    24
# 3     8  353.     0     2    46    49
 类似资料:
  • 以下是经典的实践中的一致性: 当线程A写入一个易失性变量,随后线程B读取相同的变量时,A在写入易失性变量之前可见的所有变量的值在读取易失性变量后变得对B可见。 我不确定我真的能理解这句话。例如,在这种情况下,所有变量的含义是什么?这是否意味着使用对使用非volatile变量也有副作用<在我看来,这句话有一些我无法理解的微妙含义<有什么帮助吗?

  • 问题内容: 以下是经典文章Concurency in Practice: 当线程A写入易失性变量,随后线程B读取相同的变量时,在写入易失性变量之前A可见的所有变量的值,在读取易失性变量后B可见。 我不确定我是否真的能理解这一说法。例如,在这种情况下,所有变量的含义是什么?这是否意味着使用volatile还会对非易失性变量的使用产生副作用? 在我看来,该声明具有我无法理解的一些微妙含义。 有什么帮助

  • 问题内容: 我有这个变量: 我想在像SCSS这样的选择器中使用它: 因此输出变为CSS: 但这是行不通的。可能吗? 问题答案: 如果在字符串中使用,例如在URL中使用:

  • 我的列表由变量类型(字符串),金额(双精度)和数量(整数)组成,它看起来像这样: 所以我试图循环我的数组来寻找重复的,如果是重复的,就加上数量。结果会是这样的: 我尝试过创建另一个列表,将列表添加到新列表中,然后比较它们,但没有成功 我不希望对值进行硬编码以检查重复类型

  • 问题内容: 我有一个Perl脚本,其中有一个类似的变量。我们可以将$ name的内容设置为可以导入其他文件并在其他文件中使用的环境变量吗? 我尝试过,但是这不起作用。 问题答案: 如果要影响您的进程或子进程的环境,请使用哈希: 如果要影响父进程的环境,则不会。至少没有父进程的合作。标准过程是发出shell脚本并让父进程执行该shell脚本: …并从shell(脚本)中调用该脚本为:

  • 问题内容: 是否可以在重定向中添加GET变量?(无需修改我的urls.py) 如果我做 我懂了 我没有抱怨,而是只是想知道… 问题答案: 是否可以在重定向中添加GET变量?(无需修改我的urls.py) 不修改,我不知道有什么办法。 我没有使用HttpResponseRedirect(’/ my_long_url /%s /?q = something’,x)的抱怨,但是只是想知道… 你可能需要编