2016-06-20 6 views
0

У меня есть проблема с R:R: Генерировать фиктивный вектор для каждой категории в кадре данных

Давайте предположим, что кадр данных, который называется ДФ с информацией о различных лиц (например, возраст, пол) и переменную, указывающую соответствующий страна.

Теперь я хотел бы включить для каждого человека столько строк, сколько есть стран. Информация о разных лицах (здесь: возраст, пол) должна быть одинаковой для каждой добавленной строки для каждого человека. Однако каждая строка должна содержать одно из названий стран. Кроме того, должна быть включена фиктивная переменная, которая принимает значение 1, если это строка с фактической страной и ноль else.

Иными словами, мы начинаем с набора данных с информацией о личности и о ее стране. Впоследствии для каждого человека имеется строка для каждой страны и фиктивная переменная, указывающая, какая из них является «правильной» страной. +

Если есть 5 человек и 5 стран: исходный набор данных должен содержать 5 строк, преобразуется в 25 (25 * 25).

Есть ли хороший способ сделать это?

ответ

1

Пусть ваш dataframe называется df и вашу страну переменной Country. Ниже преобразует переменную страны в манекенов:

df1 <- data.frame(df,model.matrix(~df$Country+0)) 

Тогда не было бы достаточно, чтобы повторить каждую строку из df1 пять раз (или столько раз, сколько есть страны)?

df2 <- [rep(1:nrow(df1),length(unique(df$Country))),] 
0

Благодарим вас за предложения! Наконец, я нашел дополнительный способ добиться этого: просто добавьте переменную (например, id) равную 1 для всех наблюдений. Затем используйте команду complete (данные, переменные для объединения, fill = list (id = 0)) из пакета tidyr

Смежные вопросы