Назначение уникальной переменной из data.frame
Это похоже на этот вопрос, но мои выходные результаты отличаются.
Возьмите данные:
example <- data.frame(var1 = c(2,3,3,2,4,5),
var2 = c(2,3,5,4,2,5),
var3 = c(3,3,4,3,4,5))
Теперь я хочу создать example$Identity
которые принимают значение от 1:x для каждого уникального значения var1
я использовал
example$Identity <- apply(example[,1], 2, function(x)(unique(x)))
Но я не знаком с правильным форматированием function()
Выход из example$Identity
должно быть 1,2,2,1,3,4
2 ответа
Решение
Это:
example$Identity <- as.numeric(as.factor(example$var1))
даст вам желаемый результат:
> example$Identity
[1] 1 2 2 1 3 4
Заворачивая as.factor
в as.numeric
он начинает считать уровни факторов с 1
и так далее.
Или вы можете использовать match
example$Identity <- with(example, match(var1, unique(var1)))
Если значения отсортированы как в векторе, findInterval
также может быть использован
findInterval(example$var1, unique(example$var1))
#[1] 1 2 2 1 3 4