Запись в R: преобразовать 2 числовые строки данных в одну строку фактора
У меня есть фрейм данных:
> x = data.frame(var1 = c(0,0,1,1), var = c(0,1,0,1))
Я хотел бы добавить еще один столбец к этому фрейму данных, который является фактором, установленным на основе значений var1 и var2.
factor "00" if both are 0
factor "10" if var1 = 1 and var2 = 0
factor "01" if var1 = 0 and var2 = 1
factor "11" if both are 1
В действительности у меня есть около 10 переменных, и мне нужны факторы для создания кросс-таблиц, чтобы проверить, как факторы влияют на другие переменные.
Я мог бы написать, если заявления, чтобы сделать это, однако я думаю, что должен быть более разумный способ сделать это. Какие-либо предложения?
3 ответа
Решение
Ты ищешь interaction
:
transform(x, Factor=interaction(var1, var,sep=''))
var1 var Factor
1 0 0 00
2 0 1 01
3 1 0 10
4 1 1 11
Использование transform
а также paste0
> x <- transform(x, Factor=paste0(var1, var))
var1 var Factor
1 0 0 00
2 0 1 01
3 1 0 10
4 1 1 11
> sapply(x, class) # checking class for each column
var1 var Factor
"numeric" "numeric" "factor"
Другой альтернативой является использование within
x <- within(x, Factor <- factor(paste0(var1, var)))
Просто создайте новый столбец - используйте factor
а также paste0
:
> x$f = factor(paste0(x$var1,x$var))
> x
var1 var f
1 0 0 00
2 0 1 01
3 1 0 10
4 1 1 11