Description Usage Arguments Details Value Note See Also Examples
A melt.data.table
S3 method extending reshape2:::melt
, for melting a data.table
. reshape2
also has to be loaded for using melt.data.table
. A lot similar to reshape2:::melt.data.frame
, but much faster and with some additional features.
1 2 3 4 5 6 7 |
data |
A |
id.vars |
vector of id variables. Can be integer (corresponding id column numbers) or character (id column names) vector. If |
measure.vars |
vector of measure variables. Can be integer (corresponding measue column numbers) or character (measure column names) vector. If |
variable.name |
name for the measured variable names column. The default name is 'variable'. |
value.name |
name for the molten data values column. The default name is 'value'. |
na.rm |
If |
variable.factor |
If |
value.factor |
If |
verbose |
|
... |
any other arguments to be passed to/from other methods |
If id.vars
and measure.vars
are both NULL
, all non-numeric/integer/logical
columns are assigned as id variables and the rest of the columns are assigned as measure variables. If only one of id.vars
or measure.vars
is supplied, the rest of the columns will be assigned to the other. Both id.vars
and measure.vars
can have the same column more than once and same column can be as id and measure variables.
melt.data.table
also accepts list
columns for both id and measure variables. When all measure.vars
are not of the same type, they'll be coerced according to the hierarchy list
> character
> numeric > integer > logical
. For example, any of the measure variables is a list
, then entire value column will be coerced to a list. Note that, if the type of value
column is a list, na.rm = TRUE
will have no effect.
All class attributes on value
column (example: Date
) are dropped silently.
An unkeyed data.table
containing the molten data.
Differences between melt.data.table
and reshape2:::melt.data.frame
:
There are two other arguments variable.factor
and value.factor
which for backwards compatibility with reshape2:::melt.data.frame
is set to TRUE
and FALSE
respectively.
melt.data.table
can handle list columns in both id
and measure
vairables. The molten data retains list columns as such. As long as at least one measure.vars
is a list
, the value
column of molten data will be a list
.
melt(data, id=integer(0), measure=integer(0))
gives a data.table with 0 rows and 2 columns - variable
and value
(default names), as opposed to reshape2:::melt.data.frame
which gives a 0
columns and nrow(data)
rows.
dcast.data.table
, https://r-forge.r-project.org/projects/datatable/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | set.seed(45)
require(reshape2)
require(data.table)
DT <- data.table(
i1 = c(1:5, NA),
i2 = c(NA,6,7,8,9,10),
f1 = factor(sample(c(letters[1:3], NA), 6, TRUE)),
c1 = sample(c(letters[1:3], NA), 6, TRUE),
d1 = as.Date(c(1:3,NA,4:5), origin="2013-09-01"),
d2 = as.Date(6:1, origin="2012-01-01"))
DT[, l1 := DT[, list(c=list(rep(i1, sample(5,1)))), by = i1]$c] # list cols
DT[, l2 := DT[, list(c=list(rep(c1, sample(5,1)))), by = i1]$c]
# basic examples
melt(DT, id=1:2, measure=3)
melt(DT, id=c("i1", "i2"), measure="f1", value.factor=TRUE) # same as above, but value is factor
# on Date
melt(DT, id=c("i1", "f1"), measure=c("d1", "d2")) # date class attribute lost
melt(DT, id=c("i1", "f1"), measure=c("c1", "d1")) # value is char, date attribute lost
# on list
melt(DT, id=1, measure=c("l1", "l2")) # value is a list
melt(DT, id=1, measure=c("c1", "l1")) # c1 coerced to list
# on character
melt(DT, id=1, measure=c("c1", "f1")) # value is char
melt(DT, id=1, measure=c("c1", "i2")) # i2 coerced to char
# on na.rm=TRUE
melt(DT, id=1, measure=c("c1", "i2"), na.rm=TRUE) # remove NA
|
Loading required package: reshape2
Attaching package: 'reshape2'
The following objects are masked from 'package:data.table':
dcast, melt
i1 i2 variable value
1: 1 NA f1 c
2: 2 6 f1 b
3: 3 7 f1 a
4: 4 8 f1 b
5: 5 9 f1 b
6: NA 10 f1 b
i1 i2 variable value
1: 1 NA f1 c
2: 2 6 f1 b
3: 3 7 f1 a
4: 4 8 f1 b
5: 5 9 f1 b
6: NA 10 f1 b
i1 f1 variable value
1: 1 c d1 2013-09-02
2: 2 b d1 2013-09-03
3: 3 a d1 2013-09-04
4: 4 b d1 <NA>
5: 5 b d1 2013-09-05
6: NA b d1 2013-09-06
7: 1 c d2 2012-01-07
8: 2 b d2 2012-01-06
9: 3 a d2 2012-01-05
10: 4 b d2 2012-01-04
11: 5 b d2 2012-01-03
12: NA b d2 2012-01-02
i1 f1 variable value
1: 1 c c1 a
2: 2 b c1 c
3: 3 a c1 a
4: 4 b c1 a
5: 5 b c1 b
6: NA b c1 NA
7: 1 c d1 15950
8: 2 b d1 15951
9: 3 a d1 15952
10: 4 b d1 NA
11: 5 b d1 15953
12: NA b d1 15954
Warning message:
In melt.data.table(DT, id = c("i1", "f1"), measure = c("c1", "d1")) :
'measure.vars' [c1, d1] 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 to. Check DETAILS in ?melt.data.table for more on coercion.
i1 variable value
1: 1 l1 1,1
2: 2 l1 2,2,2
3: 3 l1 3,3,3
4: 4 l1 4,4,4
5: 5 l1 5,5,5,5,5
6: NA l1 NA
7: 1 l2 a,a,a
8: 2 l2 c,c
9: 3 l2 a
10: 4 l2 a,a
11: 5 l2 b,b,b
12: NA l2 NA,NA,NA,NA
i1 variable value
1: 1 c1 a
2: 2 c1 c
3: 3 c1 a
4: 4 c1 a
5: 5 c1 b
6: NA c1 NA
7: 1 l1 1,1
8: 2 l1 2,2,2
9: 3 l1 3,3,3
10: 4 l1 4,4,4
11: 5 l1 5,5,5,5,5
12: NA l1 NA
Warning message:
In melt.data.table(DT, id = 1, measure = c("c1", "l1")) :
'measure.vars' [c1, l1] are not all of the same type. By order of hierarchy, the molten data value column will be of type 'list'. All measure variables not of type 'list' will be coerced to. Check DETAILS in ?melt.data.table for more on coercion.
i1 variable value
1: 1 c1 a
2: 2 c1 c
3: 3 c1 a
4: 4 c1 a
5: 5 c1 b
6: NA c1 NA
7: 1 f1 c
8: 2 f1 b
9: 3 f1 a
10: 4 f1 b
11: 5 f1 b
12: NA f1 b
i1 variable value
1: 1 c1 a
2: 2 c1 c
3: 3 c1 a
4: 4 c1 a
5: 5 c1 b
6: NA c1 NA
7: 1 i2 NA
8: 2 i2 6
9: 3 i2 7
10: 4 i2 8
11: 5 i2 9
12: NA i2 10
Warning message:
In melt.data.table(DT, id = 1, measure = c("c1", "i2")) :
'measure.vars' [c1, i2] 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 to. Check DETAILS in ?melt.data.table for more on coercion.
i1 variable value
1: 1 c1 a
2: 2 c1 c
3: 3 c1 a
4: 4 c1 a
5: 5 c1 b
6: 2 i2 6
7: 3 i2 7
8: 4 i2 8
9: 5 i2 9
10: NA i2 10
Warning message:
In melt.data.table(DT, id = 1, measure = c("c1", "i2"), na.rm = TRUE) :
'measure.vars' [c1, i2] 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 to. Check DETAILS in ?melt.data.table for more on coercion.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.