4 回答

TA貢獻(xiàn)2080條經(jīng)驗 獲得超4個贊
這里有一個解決方案:
df.expanded <- df[rep(row.names(df), df$freq), 1:2]
結(jié)果:
var1 var2
1 a d
2 b e
2.1 b e
3 c f
3.1 c f
3.2 c f

TA貢獻(xiàn)1848條經(jīng)驗 獲得超2個贊
使用expandRows()從splitstackshape一攬子:
library(splitstackshape)
expandRows(df, "freq")
簡單的語法,非???,工作在data.frame或data.table.
結(jié)果:
var1 var2
1 a d
2 b e
2.1 b e
3 c f
3.1 c f
3.2 c f

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊
舊疑問句中的新動詞:
library(tidyr) # version >= 0.8.0
df <- data.frame(var1=c('a', 'b', 'c'), var2=c('d', 'e', 'f'), freq=1:3)
df %>%
uncount(freq)
var1 var2
1 a d
2 b e
2.1 b e
3 c f
3.1 c f
3.2 c f

TA貢獻(xiàn)1877條經(jīng)驗 獲得超1個贊
不是為了data.table
因為他們?nèi)鄙?code>row.names財產(chǎn)。這種方法適用于以下兩種情況:
df.expanded?<-?df[rep(seq(nrow(df)),?df$freq),?1:2]
密碼data.table
是一點清潔劑:
#?convert?to?data.table?by?referencesetDT(df)df.expanded?<-?df[rep(seq(.N),?freq),?!"freq"]
- 4 回答
- 0 關(guān)注
- 977 瀏覽
添加回答
舉報