Вот полностью предварительное решение вашей проблемы (поскольку вы не предоставили никаких воспроизводимых данных).
Предполагается, что у вас есть такие данные:
df1 <- data.frame(fact = LETTERS[1:10])
если вы посмотрите на структуру переменной fact
, вы увидите, что это фактор:
str(df1)
'data.frame': 10 obs. of 1 variable:
$ fact: Factor w/ 10 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10
Теперь предположим, что, как вы говорите, у вас есть другой фрейм данных, например:
set.seed(100)
df2 <- data.frame(varX = rnorm(10))
и именно этому фрейму данных вы хотите присвоить некоторый коэффициент level из fact
в зависимости от некоторого условия и хотите получить в выходных данных не целое число, а фактическое уровень фактора, это можно сделать, используя levels
:
df2$fact <- ifelse(df2$varX < 0, levels(df1$fact)[1], NA) # if varX < 0 "A" else NA
df2
varX fact
1 -0.50219235 A
2 0.13153117 <NA>
3 -0.07891709 A
4 0.88678481 <NA>
5 0.11697127 <NA>
6 0.31863009 <NA>
7 -0.58179068 A
8 0.71453271 <NA>
9 -0.82525943 A
10 -0.35986213 A
Но учтите, что если вы теперь проверите структуру df2
, R преобразовал df2$fact
в символьную переменную:
str(df2)
'data.frame': 10 obs. of 2 variables:
$ varX: num -0.5022 0.1315 -0.0789 0.8868 0.117 ...
$ fact: chr "A" NA "A" NA ...