Используя набор данных mtcars в R в качестве примера, я хочу добавить дополнительные столбцы в фрейм данных mtcars для каждого типа автомобиля.С помощью этой строки я могу получить модели автомобилей:
unique(sapply((strsplit(row.names(mtcars), " ")), "[[", 1))
Какие 22 дополнительных столбца я хочу добавить.Новый столбец для каждой модели автомобиля:
length(unique(sapply((strsplit(row.names(mtcars), " ")), "[[", 1)))
Я придумал следующий код:
mtcars01 <- mtcars
car.nms <- sapply((strsplit(row.names(mtcars), " ")), "[[", 1)
mtcars01$Mazda <- (car.nms=="Mazda")*1
mtcars01$Datsun <- (car.nms=="Datsun")*1
mtcars01$Hornet <- (car.nms=="Hornet")*1
И так далее, и так далее ... Пройдя через всемодели автомобилей, пока у меня не добавится новая колонка для каждой модели автомобиля, с нулями и единицами.Это то, что я после.Затем я мог бы просмотреть все уникальные модели автомобилей, но я бы предпочел не добавлять петли.Если возможно.
Мой собственный фрейм входных данных выглядит аналогично набору данных mtcars, но у меня другое количество моделей автомобилей, и я хотел бы повторно использовать этот код для фреймов данных, в которых количество моделей автомобилей варьируется.В моем собственном фрейме данных может быть только 3 модели автомобилей, и мне потребуется 3 дополнительных столбца, добавленных к фрейму данных с нулями и единицами для этих моделей автомобилей.Я пометил этот вопрос как «агрегат» и «dplyr», поскольку они кажутся многообещающими.Но я могу ошибаться в этой части.Спасибо за любую помощь.Извините, если я пропустил ответ.