将值列扩展为分类数据
Expand value column into categorical data
我有这个 data.frame
, ff
:
ff<-data.frame(dest = c("NY", "NY", "LA", "LA"),
st_ti = c("ok", "bad", "ok", "bad"),
qty = c(2,2,2,1))
ff
:
dest st_ti qty
1 NY ok 2
2 NY bad 2
3 LA ok 2
4 LA bad 1
我想展开,所以它都是分类数据,如下所示:
gg<-data.frame(dest = c("NY", "NY", "NY", "NY", "LA", "LA","LA"),
st_ti = c("ok", "ok", "bad", "bad", "ok", "ok", "bad"))
gg:
dest st_ti
1 NY ok
2 NY ok
3 NY bad
4 NY bad
5 LA ok
6 LA ok
7 LA bad
我想从 tidyr
包中执行类似 gather
的操作,但我认为这里没有此选项。
您可以通过 qty 列重复行名称,然后选择具有扩展行名称的行:
ff[rep(rownames(ff), ff$qty), c("dest", "st_ti")]
# dest st_ti
#1 NY ok
#1.1 NY ok
#2 NY bad
#2.1 NY bad
#3 LA ok
#3.1 LA ok
#4 LA bad
重置行名:
ff1 <- ff[rep(rownames(ff), ff$qty), c("dest", "st_ti")]
rownames(ff1) <- NULL
ff1
# dest st_ti
#1 NY ok
#2 NY ok
#3 NY bad
#4 NY bad
#5 LA ok
#6 LA ok
#7 LA bad
我们可以使用 expandRows
library(splitstackshape)
setDT(expandRows(ff, 'qty'))[]
# dest st_ti
#1: NY ok
#2: NY ok
#3: NY bad
#4: NY bad
#5: LA ok
#6: LA ok
#7: LA bad
我有这个 data.frame
, ff
:
ff<-data.frame(dest = c("NY", "NY", "LA", "LA"),
st_ti = c("ok", "bad", "ok", "bad"),
qty = c(2,2,2,1))
ff
:
dest st_ti qty
1 NY ok 2
2 NY bad 2
3 LA ok 2
4 LA bad 1
我想展开,所以它都是分类数据,如下所示:
gg<-data.frame(dest = c("NY", "NY", "NY", "NY", "LA", "LA","LA"),
st_ti = c("ok", "ok", "bad", "bad", "ok", "ok", "bad"))
gg:
dest st_ti
1 NY ok
2 NY ok
3 NY bad
4 NY bad
5 LA ok
6 LA ok
7 LA bad
我想从 tidyr
包中执行类似 gather
的操作,但我认为这里没有此选项。
您可以通过 qty 列重复行名称,然后选择具有扩展行名称的行:
ff[rep(rownames(ff), ff$qty), c("dest", "st_ti")]
# dest st_ti
#1 NY ok
#1.1 NY ok
#2 NY bad
#2.1 NY bad
#3 LA ok
#3.1 LA ok
#4 LA bad
重置行名:
ff1 <- ff[rep(rownames(ff), ff$qty), c("dest", "st_ti")]
rownames(ff1) <- NULL
ff1
# dest st_ti
#1 NY ok
#2 NY ok
#3 NY bad
#4 NY bad
#5 LA ok
#6 LA ok
#7 LA bad
我们可以使用 expandRows
library(splitstackshape)
setDT(expandRows(ff, 'qty'))[]
# dest st_ti
#1: NY ok
#2: NY ok
#3: NY bad
#4: NY bad
#5: LA ok
#6: LA ok
#7: LA bad