繁体   English   中英

R代码可根据列的值插入行并将其递增1

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM