У нас есть фрейм данных с коэффициентами:
df <- data.frame("Var1" = c("A", "B", "B", "C"),
"Var2" = c("Can", "Can", "Not", "Not"))
> str(df)
'data.frame': 4 obs. of 2 variables:
$ Var1: Factor w/ 3 levels "A","B","C": 1 2 2 3
$ Var2: Factor w/ 2 levels "Can","Not": 1 1 2 2
Теперь нам нужно преобразовать коэффициенты в цифры c значения
dfb <- df
dfb[sapply(dfb, is.factor)] <- lapply(dfb[sapply(dfb, is.factor)],
as.numeric)
> str(dfb)
'data.frame': 4 obs. of 2 variables:
$ Var1: num 1 2 2 3
$ Var2: num 1 1 2 2
> summary(as.factor(dfb$Var1))
1 2 3
1 2 1
> summary(df$Var1)
A B C
1 2 1
Количество на каждом уровне эквивалентно. Тем не менее, согласно документации для фактора, есть этот предупреждающий знак:
В частности, as.numeri c, примененный к фактору, не имеет смысла и может произойти путем неявного принуждения. Чтобы преобразовать коэффициент f приблизительно в его исходные числовые значения c, рекомендуется использовать as.numeri c (уровни (f)) [f] и немного более эффективно, чем as.numeri c (as.character (f) ).
Если мы применим эту функцию к исходному фрейму данных, мы получим NA.
df <- data.frame("Var1" = c("A", "B", "B", "C"),
"Var2" = c("Can", "Can", "Not", "Not"))
df[sapply(df, is.factor)] <- lapply(df[sapply(df, is.factor)],
function(x) as.numeric(levels(x))[x])
Warning messages:
1: In FUN(X[[i]], ...) : NAs introduced by coercion
2: In FUN(X[[i]], ...) : NAs introduced by coercion
Итак, как правильно преобразовать эти факторы в цифры c просто
as.numeric()
Я применяю это к 18 переменным, некоторые из которых имеют более 52 уровней и Мне нужно убедиться, что я правильно их конвертирую в цифру c. Судя по моим тестам, это кажется правильным, но предупреждение о документации сбивает меня с толку. Я считаю, что я в корне неправильно понимаю что-то.