фрейм данных, в котором я работаю, содержит много факторов. Возьмите категориальные переменные из mtcars (cyl, vs, am, gear, carb)
.изменение названия определенных уровней в факторе
head(mtcars[c("cyl","vs","am","gear","carb")])
cyl vs am gear carb
Mazda RX4 6 0 1 4 4
Mazda RX4 Wag 6 0 1 4 4
Datsun 710 4 1 1 4 1
Hornet 4 Drive 6 1 0 3 1
Hornet Sportabout 8 0 0 3 2
Valiant 6 1 0 3 1
В настоящее время у меня есть два вложенных для петли, чтобы извлечь те уровни, которые встречаются менее чем в 10% времени в конкретном факторе и назначить его на новый уровень имен. Поэтому я хотел бы назначить эти levsl в факторах на новый уровень с именем guz. Есть ли элегантная возможность сделать это?
выход будет представлять собой кадр данных, в котором для вездесущего фактора (предположим, что кол-во выше в наборе данных являются факторами) те строки, которые относятся к уровню, который происходит менее 10 раз, приписываются новому уровню guz , Возьмите уровень 2 в карбюраторе ... это происходит только один раз (лучше 10 процентов, но просто представьте, что это будет так), тогда просто классифицируйте этот уровень в этом fdactor (и все остальные уровни, для которых это верно в коэффициенте) в новый уровень имен guz. Новая карб-колла будет тогда 4,4,1,1, guz, 1.
выход за порог 50% будет
head(mtcars[c("cyl","vs","am","gear","carb")])
cyl vs am gear carb
Mazda RX4 6 0 1 4 guz
Mazda RX4 Wag 6 0 1 4 guz
Datsun 710 guz 1 1 4 1
Hornet 4 Drive 6 1 0 3 1
Hornet Sportabout guz 0 0 3 guz
Valiant 6 1 0 3 1
Возможно, вам придется использовать 'table', считая, что' df1' является 'data.frame',' lapply (df1, function (x) {x1 <- 100 * prop.table (таблица (x)); (x1) [x1 <10]}) ' – akrun
Ваш Q нуждается в немного уточнении. Таким образом, в mtcars, который имеет 32 строки, вы хотите превратить один из столбцов в коэффициент, а затем реклассифицировать, чтобы любые уровни, составляющие менее 10% (в данном случае 3.2), переименовали данные «guz»? – Spacedman
Я хочу превратить все эти строки в ... sry столбцы в факторы, а затем исключить те уровни, которые происходят менее 10 раз, на новый уровень, называемый guz. поэтому не оставляйте их полностью, а просто меняйте названия уровней. – heint