我正在将ddply应用于以下数据框。关键是将ecdf函数应用于annual_test_count值到具有相同国家/地区的行。
> 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函数和annual_test_count列,它可以工作:
ecdf(test$yearly_test_count)(test$yearly_test_count)*length(test$yearly_test_count)
任何人都知道为什么在使用ddply时这不起作用?
这很奇怪,因为之前的脚本工作,现在我再次运行脚本并遇到上述错误。我不确定这个问题是否与R版本或包版本有不同?
非常感谢任何帮助! :)
答案 0 :(得分:1)
一种选择是使用ave
base R
test$ecdf_val <- with(test, ave(yearly_test_count, country,
FUN = function(x) ecdf(x)(x)*length(x)))