通过使用dplyr在一个步骤中对现有数据帧进行子集化和操作来创建新数据帧

时间:2014-11-26 16:09:22

标签: r subset dplyr

所以我试图学习如何使用dplyr,一些基本程序正在逃避我。

例如,以下内容非常简单,但我不知道如何在一个步骤中在dplyr中复制它。

 my_data <- with(mtcars, data.frame(   cylinders = cyl[cyl == 6], 
                                       twice_weight = wt[cyl == 6]*2))

我可以使用mutate()创建变量two_weight,然后使用select()将结果子集化,但这看起来很麻烦。

谢谢!

2 个答案:

答案 0 :(得分:4)

也可以这样做:

filter(mtcars, cyl == 6) %>%
  transmute(cylinders = cyl, twice_weight = wt*2)

#  cylinders twice_weight
#1         6         5.24
#2         6         5.75
#3         6         6.43
#4         6         6.92
#5         6         6.88
#6         6         6.88
#7         6         5.54

.. transmute删除除了在其中显式调用的列以及对变量进行分组之外的所有列。

答案 1 :(得分:2)

尝试

library(dplyr)
mtcars %>% 
      filter(cyl==6) %>% 
      mutate(twice_weight=wt*2) %>% 
      select(cylinders=cyl, twice_weight)
#   cylinders twice_weight
#1         6         5.24
#2         6         5.75
#3         6         6.43
#4         6         6.92
#5         6         6.88
#6         6         6.88
#7         6         5.54
相关问题