У меня есть набор данных полетных данных R. Мне нужно добавить 365 столбцов в этот набор данных, по одному на каждый день года, со значением 1, если data[i]$FlightDate
записи соответствует этому Дню года, 0 в противном случае (see this question for why).Один горячий кодирующий/бинарный столбцы для каждого дня в году и их выбор
Раньше мне удалось извлечь день года из строки FlightDate с помощью lubridate
data$DayOfYear <- yday(ymd(data$FlightDate))
Как бы идти о создании каждый 365 столбцов, и держать только те столбцы (наряду с некоторыми другими) для будущее СВД? Мне действительно нужно будет повторить то же самое в течение часов в день (что я, вероятно, разделил на диапазоны 30 или 10 минут), поэтому дополнительные 48-120 однострочных столбцов для другой переменной нужно будет добавить позже.
Примечание: мой набор данных содержит около 500к рейсов в месяц, (так что около 16k рейсов для одного dayOfTheYear, если я просто взять один год данных), и имеет 100 переменных (столбцов)
Пример строки data[1,]
ввода данных :
{
DayOfYear: 10,
FieldGoodForSvd1 : 235
FieldBadForSvd2 : "some string"
...
}
Пример строка выходных данные (после генерации 365 двоичной CO и выбора полей, совместимых с SVD)
{
DayOfYear1: 0,
...
DayOfYear9: 0,
DayOfYear10: 1, // The flight had taken place on that DayOfYear
DayOfYear11: 0,
...
DayOfYear365: 0,
FieldGoodForSvd1 : 235
}
EDIT
Предположим, что моя матрица входных данных выглядит, что
DayOfYear ; FieldGoodForSvd1 ; FieldBadForSvd2
1 ; 275 ; "los angeles"
1 ; 256 ; "san francisco"
5 ; 15 ; "chicago"
Конечный результат должен быть
FieldGoodForSvd1 ; DayOfYear1 ; DayOfYear2 ; ... ; DayOfYear4 ; DayOfYear5 ; DayOfYear6 ; ... ; DayOfYear365
275 ; 1 ; 0 ; ... ; 0 ; 0 ; 0 ; ... ; 0
256 ; 1 ; 0 ; ... ; 0 ; 0 ; 0 ; ... ; 0
5 ; 0 ; 0 ; ... ; 0 ; 1 ; 0 ; ... ; 0
Возможный дубликат [Изменить данные из длинного в широкий формат R] (http: // stackoverfl ow.com/questions/5890584/reshape-data-from-long-to-wide-format-r) – germcd
@germcd Этот вопрос, похоже, касается замены некоторых строк/столбцов, но в моем случае я хочу сохранить те же записи моего набора данных и просто добавьте еще 365 столбцов на основе содержимого одного столбца. Я также не хочу группировать записи. –
ах, я вижу разницу, [это] (http://stackoverflow.com/questions/13727918/r-convert-row-data-to-binary-columns) может помочь – germcd