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

数据表中dplyr变异和总结的等价物是什么?[副本]

邢英奕
2023-03-14
mtcars %>%
    group_by(cyl) %>%
    summarise(max_mpg = max(mpg)) # output one result for each unique group,
                                  # result has nGroups number of rows.
    cyl max_mpg
  <dbl>   <dbl>
1     4    33.9
2     6    21.4
3     8    19.2
mtcars %>%
    group_by(cyl) %>%
    mutate(max_mpg = max(mpg)) # output the same result for every row in the                       
                               # same group, result has same number of rows
                               # as input

给予

Source: local data frame [32 x 12]
Groups: cyl [3]

     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb max_mpg
   (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)   (dbl)
1   21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4    21.4
2   21.0     6 160.0   110  3.90 2.875 17.02     0     1     4     4    21.4
3   22.8     4 108.0    93  3.85 2.320 18.61     1     1     4     1    33.9
4   21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1    21.4
5   18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2    19.2
6   18.1     6 225.0   105  2.76 3.460 20.22     1     0     3     1    21.4
7   14.3     8 360.0   245  3.21 3.570 15.84     0     0     3     4    19.2
8   24.4     4 146.7    62  3.69 3.190 20.00     1     0     4     2    33.9
9   22.8     4 140.8    95  3.92 3.150 22.90     1     0     4     2    33.9
10  19.2     6 167.6   123  3.92 3.440 18.30     1     0     4     4    21.4
...

data.table中这些操作的等价物是什么?

我认为mutate是由

data.table(mtcars) %>% 
    .[, max := max(mpg), by = cyl]
data.table(mtcars) %>% .[, max(mpg), by = cyl]
   cyl   V1
1:   6 21.4
2:   4 33.9
3:   8 19.2

共有1个答案

喻选
2023-03-14
library(data.table)
MT <- data.table(mtcars)

# summarise
MT[, .(max_mpg = max(mpg)), by = cyl]

   cyl max_mpg
1:   6    21.4
2:   4    33.9
3:   8    19.2

# mutate
MT[, max_mpg := max(mpg), by = cyl]

max_mpg被添加到mt,但该命令不显示数据

显示数据:

MT[, max_mpg := max(mpg), by = cyl][]

因为数据有32行,只显示头部:

MT[, max_mpg := max(mpg), by = cyl][,head(.SD, 6)]

     mpg cyl disp  hp drat    wt  qsec vs am gear carb max_mpg
 1: 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4    21.4
 2: 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4    21.4
 3: 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1    33.9
 4: 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1    21.4
 5: 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2    19.2
 6: 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1    21.4
MT[, .(max_mpg = max(mpg)), keyby=cyl]

   cyl max_mpg
1:   4    33.9
2:   6    21.4
3:   8    19.2
data("mtcars")
setDT(mtcars)[, .(max_mpg = max(mpg)), by = cyl]
 类似资料:
  • 我想按节组织我的代码。通常我使用,但当我试图在.swift文件中这样做时,它就不起作用了。 所以我的问题是,我是否能够以某种方式启用它,如果不能,那么如何在.swift文件中组织代码?

  • 像C/C、C#、Java、JavaScript和Pascal(参考)这样的编程语言结合了和语句(有时也称为或),允许您根据多个条件检查一个值以执行某些操作。 伪代码,用于描述-构造的特殊语法 了解字典查找等功能等价物后,是否存在与上述编程构造完全相同的语法等价物?

  • 我仍然在学习和试验JavaFX中的GUIs,我似乎无法得到我所希望的“外观”…我试图在一个面板中分组几个标签,然后在另一个面板中添加另一个标签。但我似乎不知道如何在JavaFX中正确使用“JPanels”? 如有任何帮助,将不胜感激 编辑:这是我试图通过尝试不同的布局来实现的,但运气仍然不好

  • 在Mac和Windows上,可以使用 <罢工> (替换 )和 (替换 ) (Docker 18.03+)位于容器内。 对于Linux来说,有没有一个可以在不传递env变量或使用各种CLI命令提取它的情况下开箱即用的方法?

  • 我们有以下场景:使用Sonarqube扫描Windows10中的两个项目。 null 提前谢了。

  • 我尝试使用numpy阵列执行以下操作: 这应该给出一个结果: 但如果输入向量是numpy数组: 它(预期)返回一个: 问题是,在此之后,我需要将结果转换回numpy数组。 我想知道的是,如果有一个有效的numpy函数可以避免这些来回的转换,那该怎么办?