У меня есть следующий образец данных о посещаемости бейсбольного матча:
team <- rep("SFG", 6)
attendance <- seq(1000:1005)
year <- c(2000, 2000, 2001, 2001, 2002, 2002)
dates <- as.Date(c("2000-01-01", "2000-01-02", "2001-01-03", "2001-01-04", "2002-02-05", "2002-03-06"))
df <- data.frame(team, attendance, year, dates)
Я хочу создать две новые колонки.
Первая - это простая двоичная переменная с именем «Opening_day», которая указывает (с помощью 1 или 0), является ли игра первой игрой года.
Второй будет называться «open_day_attendance» и будет содержать номер посещаемости этой первой игры. Другими словами, все ряды за 2000 год будут иметь посещаемость для этой первой игры года.
Если возможно, я бы хотел добиться этого с помощью dplyr и piping.
Спасибо!
РЕДАКТИРОВАТЬ: другие отметили, что это возможный повторяющийся вопрос, и хотя он в целом похож на упомянутый, большинство ответов на другой вопрос A) Не создавайте новый столбец в исходном наборе данных со значениями и B ) Не используйте dplyr и piping для достижения результата.
2 ответа
Это очевидный повторяющийся вопрос. Вы можете попробовать это:
library(data.table)
df <- data.table(team, attendance, year, dates)
df[,opening_day:=ifelse(dates==min(dates),1,0), by=year]
df[,opening_day_attendance:=attendance[dates==min(dates)], by=year]
Я бы рекомендовал создать отдельный фрейм данных, содержащий ваши минимальные даты, поскольку я предполагаю, что ваши фактические данные будут содержать более одной команды:
require(doBy)
mins <- summaryBy(dates ~ team, data = df, FUN = min, keep.names = TRUE)
mins$dates <- as.Date(mins$dates, origin = '1970-01-01')
> mins
team dates
1 SFG 2000-01-01
Затем вы можете объединить свои исходные данные в этот фрейм данных, чтобы изолировать игровую информацию для первой игры каждой команды:
mins <- merge(mins, df, by = c('team', 'dates'), all.x = TRUE)
> mins
team dates attendance year
1 SFG 2000-01-01 1 2000
Похожие вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.