Перевести data.table синтаксис в синтаксис dplyr - PullRequest
2 голосов
/ 01 ноября 2019

Я хочу получить следующий код из data.table dplyr:

library(tidyverse)
library(data.table)

Iris <- as.data.table(iris)

Iris[, .(m = mean(Sepal.Width[Sepal.Width < 3])), Species]

Это то, что у меня есть:

Iris %>% 
  group_by(Species) %>% 
  summarise(m = mean(Sepal.Width))

Но я не знаюгде я могу разместить свое состояние Sepal.Width < 3.

1 Ответ

5 голосов
/ 01 ноября 2019

Это так же, как в data.table или в base R, создайте логический вектор (Sepal.Width < 3), используйте его для подстановки столбца с [ и получения mean подмножества значений

library(dplyr)
Iris %>% 
  group_by(Species) %>%
  summarise(m = mean(Sepal.Width[Sepal.Width <3]))
# A tibble: 3 x 2
#  Species        m
#  <fct>      <dbl>
#1 setosa      2.60
#2 versicolor  2.61
#3 virginica   2.69
...