我需要通过数据框的另一列中包含的值复制给定列中包含的某些值。 例如,这是我的数据框:
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)
非常感谢你的帮助!
西尔维娅
答案 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)