Манипулирование информационным фреймом с помощью канала - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу создать приведенную ниже версию кода с оператором %>%.

main_details <- select(houses, PID, Lot.Area, Bldg.Type:Year.Built,
  Mo.Sold, Yr.Sold, SalePrice)
expensive_houses <- filter(main_details, SalePrice > 150000)
ages_added <- mutate(expensive_houses, OLD_HOUSE = Year.Built < 1960)

Я попробовал следующее:

main_details <- select(houses, PID, Lot.Area, Bldg.Type:Year.Built,
  Mo.Sold, Yr.Sold, SalePrice) %>%
expensive_houses <- filter(SalePrice > 150000) %>%
ages_added <- mutate(OLD_HOUSE = Year.Built < 1960)

Однако, это действительно дает мне ошибку .. Может кто-нибудь объяснить мне, где мне нужно разместить оператор%>% в моем коде сделать версию по каналу?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Основным преимуществом использования pipe является то, что вам не нужно создавать такие промежуточные объекты. Левая часть конвейера - это первый аргумент функции в правой части. Таким образом, вы можете использовать:

library(dplyr)

houses %>%
  select(PID, Lot.Area, Bldg.Type:Year.Built, Mo.Sold, Yr.Sold, SalePrice) %>%
  filter(SalePrice > 150000) %>%
  mutate(OLD_HOUSE = Year.Built < 1960)
0 голосов
/ 21 апреля 2020

Вот вариант с data.table

library(data.table)
setDT(houses)[SalePrice > 15000, .(PID, Lot.Area, Bldg.Type, 
     Year.Built, Mo.Sold, Yr.Sold, SalePrice)][, OLD_HOUSE := Year.Built < 1960][]
...