объединение факторов уровней data.table в R - PullRequest
0 голосов
/ 19 марта 2020

одна из моих переменных с именем type выглядит следующим образом:

$ type              : Factor w/ 4 levels "","a","e","u": 

Я хотел бы объединить пустой уровень фактора переменной type с уровнем фактора "u"

Я использовал функцию levels для достижения этой цели, но я не чувствую себя так хорошо в этом решении.

levels(mydata$type) = list( u = "", a = "a", e = "e", u = "u")

Есть ли более «data.table» подобное решение для слияния уровней факторной переменной в R?

1 Ответ

0 голосов
/ 19 марта 2020

Ваш метод:

library(data.table)
set.seed(100)
mydata = data.table(x = runif(20),
type=factor(sample(c("","a","e","u"),20,replace=TRUE)))
levels(mydata$type) = list( u = "", a = "a", e = "e", u = "u")
table(mydata$type)

 u  a  e 
11  4  5 

str(mydata$type)
 Factor w/ 3 levels "u","a","e": 3 1 2 1 1 3 3 1 2 1 ...

Я не знаю, если использование replace похоже на data.table, но вы по существу заменяете и отбрасываете избыточный коэффициент:

set.seed(100)
mydata = data.table(x = runif(20),
type=factor(sample(c("","a","e","u"),20,replace=TRUE)))
mydata[,type :=droplevels(replace(type,type=="","u"))]

table(mydata$type)
 a  e  u 
 4  5 11

str(mydata$type)
 Factor w/ 3 levels "a","e","u": 2 3 1 3 3 2 2 3 1 3 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...