Невозможно заставить работать dCast - отсутствует агрегатная функция: длина по умолчанию - PullRequest
0 голосов
/ 08 декабря 2018

Я пробовал решения из нескольких постов в stackoverflow, но безуспешно.Если вы думаете, что это дубликат, это не так.Я уже упоминал этот пост и этот пост.

enter image description here

> head(t)
  locality_id observer_id observation_date total_duration total_dist total_area
1    L1366429  obsr529319       2017-01-12            100      1.609          0
2    L1366429   obs613305       2017-10-09            120      2.000          0
3    L1366429  obsr644174       2017-11-01             90      1.000          0
4    L1619491   obs729967       2017-03-27            240      2.000          0
5    L1845345   obs360918       2017-09-30            120      5.000          0
6    L1845345   obs575633       2017-10-27             45      0.300          0
                        localities            species observation loc_type prot_type num_observers
1         Eravikulam National Park Ficedula nigrorufa           1        H Traveling             7
2         Eravikulam National Park Ficedula nigrorufa           0        H Traveling             1
3         Eravikulam National Park Ficedula nigrorufa           1        H Traveling             2
4                           Munnar Ficedula nigrorufa           0        H Traveling             8
5 Nelliampathy Hills--General Area Ficedula nigrorufa           0        H Traveling             1
6 Nelliampathy Hills--General Area Ficedula nigrorufa           0        H Traveling             3
  Abundance
1         1
2         0
3         1
4         0
5         0
6         0

Мне нужнотранспонировать значения в столбце expression_date как несколько столбцов и добавить значения total_duration в один и тот же.Все решения, которые я пробовал, заканчиваются тем, что я получаю 0 или 1 с.

Решения, протестированные с Пост 1

library(data.table)
tcast <- dcast(t, locality_id + localities + species +observer_id 
                  ~ observation_date, value.var="total_duration")
Aggregate function missing, defaulting to 'length'

В итоге я получаю фрейм данных с 0 и 1,

Решения, опробованные из Пост 2

> colnames(t)
 [1] "locality_id"      "observer_id"      "observation_date" "total_duration"   "total_dist"      
 [6] "total_area"       "localities"       "species"          "observation"      "loc_type"        
[11] "prot_type"        "num_observers"    "Abundance"

s <- c("locality_id","observation_date","total_duration")

>     any(duplicated(t[s]))
[1] TRUE

>     library(splitstackshape)
>     melteddata <- melt(getanID(t, s), c(".id", s))
'measure.vars' [observer_id, total_dist, total_area, localities, ...] are not all of the same type. By order of hierarchy, the molten data value column will be of type 'character'. All measure variables not of type 'character' will be coerced too. Check DETAILS in ?melt.data.table for more on coercion.

>     fin <- dcast(melteddata, .id + observation_date ~ total_duration)
Aggregate function missing, defaulting to 'length'

Помимо вышеуказанной ошибки, второе решение дает мне странную таблицу.

Пожалуйста, помогите!Последние несколько дней боролся с этим!

...