RxCrossTable: преобразование не работает - PullRequest
0 голосов
/ 14 сентября 2018

Я делаю это упражнение и не могу найти ошибку.

Данные являются подвыборкой набора данных такси Нью-Йорка (mht_lab2.zip на Github ).

В этом текущем упражнении я должен составить таблицу коротких и длинных поездок на такси против коротких / дальних поездок на такси без , используя rxDataStep. Поэтому я сделал это:

mht_xdf <- RxXdfData('mht_lab2.xdf') # make sure the xdf-file is in your directory
rxCrossTabs(~dist_rule:dur_rule,mht_xdf,transformFunc = function(datalist){
datalist$dist_rule=as.factor(ifelse(datalist$trip_distance>5,'long','short'),levels=c('short','long'))
datalist$dur_rule=as.factor(ifelse(datalist$trip_duration>10,'long','short'),levels=c('short','long'))
return(datalist)},transformVars = c('trip_distance','trip_duration')
)

Однако он возвращает мне ошибку:

Error in doTryCatch(return(expr), name, parentenv, handler) : 
  ERROR: The sample data set for the analysis has no variables.

Я пытался использовать transformObjects, transforms -аргумент и пытался использовать комбинации. Он последовательно возвращал ошибку.

1 Ответ

0 голосов
/ 14 сентября 2018

Приведенное выше сообщение об ошибке вводит в заблуждение. Проблема заключается в том, что функция as.factor () не имеет аргумента «уровни» - вам нужно использовать функцию factor ().

Будет работать следующее:

 myTransform <- function(dataList)
 {
    dataList$dist_rule <- factor(ifelse(dataList$trip_distance>5, 'long', 'short'), 
          levels = c('short', 'long')) 
    dataList$dur_rule <- factor(ifelse(dataList$trip_duration>10, 'long', 'short'),
          levels = c('long', 'short')) 
    dataList
 }

 rxCrossTabs(~dist_rule:dur_rule, data = mht_xdf, transformFunc = myTransform, 
        transformVars = c("trip_distance", "trip_duration"))' 
...