Как сделать средние разделения в факторных уровнях в R?

Я думаю, что некоторые реализации OpenID оставляют желать лучшего.

я предположил, что Yahoo разберется в нем, но их микросайт OpenID (информация и реализация) является мусором, по-моему. Расположение сбивает с толку, они не проясняют, как открытый идентификатор касается пользовательской учетной записи Yahoo стандарта.

, Как только я выяснил, какой экран был необходим для запуска моего запроса входа в систему, Yahoo выпустил подпись OpenID, которая включала рандомизированную строку. Это не было принято stackoverflow. Я должен был создать новый псевдоним, который также должен был быть сделан опцией по умолчанию. Без столь же упрямого требования разработать его, я думаю, что много пользователей сдалось бы.

, По-моему, более строгие инструкции для реализации должны быть произведены, и кампания должна быть в большой степени разглашена для обучения потенциальных пользователей.

, Возможно, технология могла быть включена в реализацию браузера?

9
задан sjakobi 6 December 2013 в 23:22
поделиться

2 ответа

Вот решение с использованием пакета plyr.

myDataFrame <- data.frame(myData=runif(15),myFactor=rep(c("A","B","C"),5))
library(plyr)
ddply(myDataFrame, "myFactor", function(x){
    x$Median <- median(x$myData)
    x$FactorLevelMedianSplit <- factor(x$myData <= x$Median, levels = c(TRUE, FALSE), labels = c("Below", "Above"))
    x
})
4
ответ дан 3 November 2019 в 07:14
поделиться

Вот хакерский способ. Хэдли может предложить что-то более элегантное:

Для начала мы просто объединяем вывод на :

 R> do.call(c,byOutput)
A1 A2 A3 A4 A5 B1 B2 B3 B4 B5 C1 C2 C3 C4 C5 
 1  2  2  1  1  1  1  2  1  2  1  2  1  1  2 

и, что важно, получаем здесь уровни факторов 1 и 2, которые мы можем использовать для повторного- проиндексируйте новый фактор с этими уровнями:

R> c("Below","Above")[do.call(c,byOutput)]
 [1] "Below" "Above" "Above" "Below" "Below" "Below" "Below" "Above" 
 [8] "Below" "Above" "Below" "Above" "Below" "Below" "Above"
R> as.factor(c("Below","Above")[do.call(c,byOutput)])
[1] Below Above Above Below Below Below Below Above Below Above 
[11] Below Above Below Below Above
Levels: Above Below

, который мы затем можем назначить в data.frame , который вы хотели изменить:

R> myDataFrame$FactorLevelMedianSplit <- 
      as.factor(c("Below","Above")[do.call(c,byOutput)])

Обновление : неважно, нам нужно будет переиндексировать myDataFrame для сортировки AA ... AB ... BC ... C, прежде чем мы добавим новый столбец. Оставил в качестве упражнения ...

1
ответ дан 3 November 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: