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

DPLYR:我如何编写与table()基函数等价的函数并保留列名?

滕璞瑜
2023-03-14

我如何只使用dplyr函数(想象一下有6M行的巨大的Data.Table(BIGiris))来实现与下面的代码相同的功能呢

> out<-as.data.frame(table(iris$Species))
> names(out)[1]<-'Species'
> names(out)[2]<-'my_cnt1'
> out

输出是这个。请注意,我必须重新命名列1。另外,在dplyr mutate或其他调用中,我希望以某种方式为我的新count列指定名称。

     Species my_cnt1
1     setosa      50
2 versicolor      50
3  virginica      50

想象一下连接到这样一个表(假设iris data.frame有6M行),species更像是“species_id”

> habitat<-data.frame(Species=c('setosa'),lives_in='sea')

最终联接和输出(对于联接,我需要一直保留列名)

> left_join(out,habitat)
Joining by: "Species"
     Species my_cnt1 lives_in
1     setosa      50      sea
2 versicolor      50     <NA>
3  virginica      50     <NA>
> 

共有1个答案

司徒焕
2023-03-14

对于第一部分,可以使用dplyr如下所示

library(dplyr)
out <- iris %>% group_by(Species) %>% summarise(my_cnt1 = n())
out

Source: local data frame [3 x 2]

     Species my_cnt1
1     setosa      50
2 versicolor      50
3  virginica      50

要在一个链中继续,请执行以下操作:

out <- iris %>% group_by(Species) %>% summarise(my_cnt1 = n()) %>% left_join(habitat)
out

Source: local data frame [3 x 3]

     Species my_cnt1 lives_in
1     setosa      50      sea
2 versicolor      50       NA
3  virginica      50       NA

顺便说一下,dplyr现在使用%>%代替%.%。它也是magrittr包的一部分。

 类似资料:
  • 在Raku中,如何编写Haskell的函数的等价物? 在Haskell中,给定一个谓词和一个列表,可以将列表分成两部分: 满足谓词的元素的最长前缀 例如,Haskell表达式... …计算结果为… 如何编写Haskell的函数的Raku等价物? 基于@chenyf的回答,我开发了以下子程序… 程序输出为…

  • 下面是一些示例数据,它的输出是我想要得到的。 输出:

  • 问题内容: 是否有与的函数等效的也就是说,给定多个相同长度的数组,将创建一个成对的数组。 例如,如果我有三个看起来像这样的数组: 输出数组应为: 问题答案: 这是一个时髦的Ecmascript 6版本: 相当于插图。到: (并且指出ES6具有可变参数语法,因此以下函数定义将类似于python,但请参见下文的免责声明…这将不是其自身的逆,因此)将不相等x;尽管正如Matt Kramer指出的那样例如

  • 问题内容: 在Python中,我想编写一个返回另一个函数的函数。返回的函数应该可以通过参数调用,并返回高度和半径为圆柱的体积。 我知道如何从Python中的函数返回 值 ,但是如何返回 另一个函数 ? 问题答案: 使用Python尝试一下: 这样使用它,例如与和: 注意,返回一个函数很简单,只需在函数内部定义一个新函数,然后在最后返回它- 小心地为每个函数传递适当的参数。仅供参考,从另一个函数返回

  • 嗯,我已经试过多次了。不过,我一度认为最长的序列函数会有所帮助,因为它显示的是最长的冰雹序列。尽管如此,我似乎不知道如何查找或存储它用于查找的值。如果有人能解释一下,我将不胜感激。 我遇到的问题是我最长的启动顺序: 我不知道如何将其转换为递归,我注意到对于一些递归,我看到人们仍然在使用for循环,但我确信我们不应该使用循环。这可能是一个愚蠢的问题,但如果有人知道的话,有没有一个公式可以将循环转换为

  • 场景: 这段代码不起作用,而且我找不到一种方法来调用一个像继承的那样的特性函数。我尝试调用、、、以及以下命令: 什么都不起作用。 是否有方法使其工作,或者我必须完全重写比这复杂得多的trait函数:)