r - dcast restructuring from long to wide format not working -


my df looks this:

id  task type    freq   3     1          2 3     1    b       3 3     2          3 3     2    b       0 4     1          3 4     1    b       3 4     2          1 4     2    b       3 

i want restructure id , get:

id      b …  z     3    5    3       4    4    6         

i tried:

df_wide <- dcast(df, id + task ~ type, value.var="freq") 

and got error:

aggregation function missing: defaulting length 

i can't figure out put in fun.aggregate. what's problem?

the reason why getting warning in description of fun.aggregate (see ?dcast):

aggregation function needed if variables not identify single observation each output cell. defaults length (with message) if needed not specified

so, aggregation function needed when there more 1 value 1 spot in wide dataframe.

an explanation based on data:

when use dcast(df, id + task ~ type, value.var="freq") get:

  id task b 1  3    1 2 3 2  3    2 3 0 3  4    1 3 3 4  4    2 1 3 

which logical because each combination of id, task , type there value in freq. when use dcast(df, id ~ type, value.var="freq") (including warning message):

aggregation function missing: defaulting length   id b 1  3 2 2 2  4 2 2 

now, looking @ top part of data:

id  task type    freq   3     1          2 3     1    b       3 3     2          3 3     2    b       0 

you see why case. each combination of id , type there 2 values in freq (for id 3: 2 , 3 a & 3 , 0 type b) while can put 1 value in spot in wide dataframe each values of type. therefore dcast wants aggregate these values 1 value. default aggregation function length, can use other aggregation functions sum, mean, sd or custom function specifying them fun.aggregate.

for example, fun.aggregate = sum get:

  id b 1  3 5 3 2  4 4 6 

now there no warning because dcast being told when there more 1 value: return sum of values.


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -