[英]R code to insert rows based on a column's value and increment it by 1
我的数据中有两列,如下所示。 我想根据“总计”列中的值插入行。 例如。 对于record1,总值为9。因此,代码XS1.1应该有9条记录,Total从1到9。请在期望的输出下面查找,以更清楚。 我只是在学习R的基础知识。请帮我提供代码吗?
Code Total
XS1.1 9
W1.23 3
Kj1.9 2
预期输出:
Code Total
XS1.1 1
XS1.1 2
XS1.1 3
XS1.1 4
XS1.1 5
XS1.1 6
XS1.1 7
XS1.1 8
XS1.1 9
W1.23 1
W1.23 2
W1.23 3
Kj1.9 1
Kj1.9 2
library(data.table)
setDT(df)[,.(Total=1:Total), code]
或基数R
:
with(df, data.frame(code=rep(code, Total), Total=sequence(Total)))
首先先制作您期望的数据框架,然后再制作所需的数据框架:
dat <- data.frame("Code"=c("XS1.1","W1.23","Kj1.9"),"Total"=c(9,3,2))
dat2 <- data.frame("Code"=rep(dat[,1],dat[,2]),"Total"=c(seq(1:dat[1,2]),seq(1:dat[2,2]),seq(1:dat[3,2])))
另一个想法:
library(tidyr)
library(dplyr)
df %>%
group_by(Code) %>%
complete(Total = full_seq(1:Total, 1))
这使:
#Source: local data frame [14 x 2]
#Groups: Code [3]
#
# Code Total
# <fctr> <dbl>
#1 Kj1.9 1
#2 Kj1.9 2
#3 W1.23 1
#4 W1.23 2
#5 W1.23 3
#6 XS1.1 1
#7 XS1.1 2
#8 XS1.1 3
#9 XS1.1 4
#10 XS1.1 5
#11 XS1.1 6
#12 XS1.1 7
#13 XS1.1 8
#14 XS1.1 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.