Мы можем получить rowSums
столбцов, отличных от первого, и создать data.frame
с первым столбцом исходного набора данных
data.frame(df1[1], bookings = rowSums(df1[-1]))
# date bookings
#1 2019-03-11 44
#2 2019-03-12 22
#3 2019-03-13 61
Если нам нужно указать столбцы с 'pax'
nm1 <- grep("pax", names(df1))
data.frame(df1[1], bookings = rowSums(df1[nm1]))
Или другой base R
вариант Reduce
с +
data.frame(df1[1], bookings = Reduce(`+`, df1[nm1]))
Если нам нужен параметр tidyverse
(без необходимости повторного изменения формы), selecg
столбцы, в которых в качестве подстроки имен столбцов указано «pax», то используйте +
в reduce
для создания «бронирований». «
library(tidvyerse)
df1 %>%
transmute(date, bookings = select(., matches("pax")) %>%
reduce(`+`))
# date bookings
#1 2019-03-11 44
#2 2019-03-12 22
#3 2019-03-13 61
Или другой вариант rowSums
, который мы впервые разместили здесь
df1 %>%
transmute(date, bookings = rowSums(.[nm1]))
# date bookings
#1 2019-03-11 44
#2 2019-03-12 22
#3 2019-03-13 61
Здесь нам не нужно менять форму, и это должно быть быстро
данные
df1 <- structure(list(date = c("2019-03-11", "2019-03-12", "2019-03-13"
), go_pax = c(7L, 11L, 20L), full_pax = c(23L, 5L, 4L), plus_pax = c(14L,
6L, 37L)), class = "data.frame", row.names = c(NA, -3L))