У меня есть данные, что выглядит следующим образом:Создать новый столбец на основе значений других переменных
Набор из 10 переменных символов
Char<-c("A","B","C","D","E","F","G","H","I","J")
и кадр данных, который выглядит следующим образом
Col1<-seq(1:25)
Col2<-c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5)
DF<-data.frame(Col1,Col2)
Что я хотел бы сделать, так это добавить третий столбец в фрейм данных с логикой 1 = A, 2 = B, 3 = C и т. Д. Таким образом, конечный результат будет
Col3<-c("A","A","A","A","A","B","B","B","B","B","C","C","C","C","C","D","D","D","D","D","E","E","E","E","E")
DF<-data.frame(Col1,Col2,Col3)
Для этого простого примера я мог бы пойти с простой заменой, как этот вопрос: Create new column based on 4 values in another column
Но мой фактический набор данных гораздо больше, с намного большим количеством переменных, чем эта простая Например, выписывание эквивалентов, как в приведенном выше ответе, не является возможным.
Поэтому я хотел бы иметь немного кода, который может быть применен к гораздо большему кадру данных. Возможно, что-то, что зациклилось на всех значениях Col2 и соответствовало их местоположению Char.
1=Char[1] 2=Char[2] 3=Char[3]...... for the entire length of Col2
Или любой другой способ, который может масштабироваться до тех пор чудовищным кадр данных
'Char [Col2]' дает выход в вашем примере. Это все, что вам нужно? –
Мне нравится простота этого. Это хорошо работает для этого примера, но в моем наборе данных Col2 не является простой серией чисел. Но если бы я мог взять мои мои фактические данные и превратиться в ряд чисел, как указано выше (возможно, используя уникальные?), Тогда этот подход был бы идеальным. – Vinterwoo
Если ваши коды поиска различаются, вы можете назвать вектор 'Char', и он будет действовать как таблица поиска. 'names (Char) <- codes'. Затем вы можете использовать 'Char [Col2]', и он будет подмножаться над именами, а не индексом. –