Вместо суммирования мы можем использовать mutate
. После группировки по 'date1', 'hotel', разделите 'sales' на mean
of 'sales', чтобы создать новый столбец
library(tidyverse)
df %>%
group_by(date1, hotel) %>%
mutate(SalesDividedByMean = sales/mean(sales))
. ПРИМЕЧАНИЕ. Если столбцы имеют разные значения type
s, результаты cbind
в matrix
и matrix
могут иметь только один тип. Таким образом, вектор класса character
может изменить все данные на character
. Обтягивая data.frame
, распространяйте это изменение либо на factor
(по умолчанию stringsAsFactors = TRUE
, либо на `символ)
df <- data.frame(hotel, date1, dba, sales)
Вы можете использовать ограничения DEFAULT для установки метки времени:
ALTER TABLE
MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP
ALTER TABLE
MODIFY dt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Тогда вам не нужно будет указывать NOW ()
в ваших операторах INSERT / UPDATE.
Ссылка: Свойства TIMESTAMP
мог быть установлен по умолчанию на обновлении строк
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Здесь был задан аналогичный вопрос « Отметка времени для MySQL » поле отметки времени будет обновляться при каждом доступе. Вы также можете использовать Триггер , помещенный в рассматриваемую таблицу, чтобы автоматически заполнять эти поля. В зависимости от среды некоторые магазины / предприятия не любят использование триггеров, поэтому вам, возможно, придется искать альтернативные решения.
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
должен быть правильный код.