数据框中包含的重复值

时间:2018-03-14 16:14:40

标签: r dataframe

我需要通过数据框的另一列中包含的值复制给定列中包含的某些值。 例如,这是我的数据框:

Year <- rep(c('2011', '2012', '2013', '2014', '2015', '2016'), 3)
LT <- rep(c(8, 9, 10), each=6)
Nind <- rep(c(10, 7, 5), each=6)
df <- data.frame(Year, LT, Nind)

我想要做的是按年复制LT中每个LT的相应值,如下所示:

lt <- c(rep(8, 60), rep(9, 42), rep(10, 30))
yr <- c(rep(c('2011', '2012', '2013', '2014', '2015', '2016'), each=10), 
rep(c('2011', '2012', '2013', '2014', '2015', '2016'), each=7),rep(c('2011', 
'2012', '2013', '2014', '2015', '2016'), each=5))
df2 <- data.frame(yr, lt)

非常感谢你的帮助!

西尔维娅

2 个答案:

答案 0 :(得分:0)

library(data.table)
library(magrittr)
df %>% setDT %>% .[,rep(rbind(Nind),Nind),by=c("Year","LT")] %>% .[,-3]

结果:

     Year LT
  1: 2011  8
  2: 2011  8
  3: 2011  8
  4: 2011  8
  5: 2011  8
 ---        
128: 2016 10
129: 2016 10
130: 2016 10
131: 2016 10
132: 2016 10

答案 1 :(得分:0)

以下是使用expandRows()包中的splitstackshape的一种解决方案。

library('splitstackshape')    
df <- df %>% 
  expandRows(count = 'LT', drop = FALSE) %>% 
  select(-Nind)