2016-12-05 7 views
1

Я применяю ddply к следующему фрейму данных. Дело в том, чтобы применить функцию ecdf к значению yearly_test_count для строк, имеющих одну и ту же страну.R - Объект не найден Ошибка при использовании ddply

> head(test) 
country yearly_test_count download_speed 
1  AU     1  2.736704 
2  AU     6  3.249486 
3  AU     6  2.287267 
4  AU     6  2.677241 
5  AU     6  1.138213 
6  AU     6  3.205364 

Это сценарий, я использовал:

house_total_year_ecdf <- ddply(test, c("country"), mutate, 
     ecdf_val = ecdf(yearly_test_count)(yearly_test_count)*length(yearly_test_count)) 

Но я получил следующее сообщение об ошибке:

Error in eval(substitute(expr), envir, enclos) : 
    object 'yearly_test_count' not found 

=============== ================================================== =

Я попытался использовать функцию ecdf отдельно с yearly_test_count колонкой, и она работает:

ecdf(test$yearly_test_count)(test$yearly_test_count)*length(test$yearly_test_count) 

У любого есть идеи, почему это не работает при использовании ddply?

Это странно, поскольку скрипт работал до этого, теперь я снова запускаю сценарий и сталкиваюсь с указанной ошибкой. Я не уверен, связана ли эта проблема с разными версиями R или версиями пакета?

Любая помощь очень ценится! :)

+0

@akrun ecdf является эмпирическая функция распределения. Подробнее здесь: https://stat.ethz.ch/R-manual/R-devel/library/stats/html/ecdf.html –

+0

Аналогичный вопрос был здесь http://stackoverflow.com/questions/6955128/ объект-не-найден-ошибка-с-ddply-внутри-а-function'. Это поможет? –

+0

bdw какая версия 'plyr' у вас есть? потому что код работает для меня. у меня есть версия 'plyr_1.8.4' –

ответ

1

Один из вариантов будет использовать ave из base R

test$ecdf_val <- with(test, ave(yearly_test_count, country, 
         FUN = function(x) ecdf(x)(x)*length(x))) 

 Смежные вопросы

  • Нет связанных вопросов^_^