根据R中的条件在数据帧中重复行

根据R中的条件在数据帧中重复行,r,scaling,R,Scaling,我有一个如下所示的数据帧: STAND Plot1 X DBH Spec HT NOTES 1 TEN YEAR VAR RET 1 s 1.25 ASH NA 2 TEN YEAR VAR RET 1 s 1.25 ASH NA 3 TEN YEAR VAR RET 1 s 1.25 ASH NA

我有一个如下所示的数据帧:

STAND Plot1 X    DBH   Spec   HT              NOTES
1   TEN YEAR VAR RET     1 s   1.25    ASH   NA                   
2   TEN YEAR VAR RET     1 s   1.25    ASH   NA                   
3   TEN YEAR VAR RET     1 s   1.25    ASH   NA                   
4   TEN YEAR VAR RET     1 s   1.25    ASH   NA                   
5   TEN YEAR VAR RET     1 s   1.25    ASH   NA                   
我需要多次重复一个行块(不同块的数字不同)。所以我有一个展台,每个展台上有5*2个图。5个图是小的(X=“s”),另外5个图是大的(X=“L”)。我需要为每个大型绘图复制行20次,每个小型绘图复制行500次。因此,重复块的条件如下:

STAND == "TEN YEAR VAR RET", Plot1 == "1", X == "s"  * 500
STAND == "TEN YEAR VAR RET", Plot1 == "2", X == "s"  * 500 etc
对于大型地块,如果是:

STAND == "TEN YEAR VAR RET", Plot1 == "1", X == "L"  * 20
STAND == "TEN YEAR VAR RET", Plot1 == "2", X == "L"  * 20 etc

任何建议都将不胜感激

我们可以创建一些行的数字索引

#row index with 's' value for X
i1 <- with(df1, which(STAND == "TEN YEAR VAR RET" & Plot1 %in%  c("1", "2")& X == "s"))
#row index for 'L' value for X
i2 <- with(df1, which(STAND == "TEN YEAR VAR RET" & Plot1 %in%  c("1", "2")& X == "L"))
#row index for those that doesn't belong to the above 2
i3 <- which(!seq_len(nrow(df1)) %in% c(i1, i2))
#X值为“s”的行索引

我们可以创建一些行的数字索引

#row index with 's' value for X
i1 <- with(df1, which(STAND == "TEN YEAR VAR RET" & Plot1 %in%  c("1", "2")& X == "s"))
#row index for 'L' value for X
i2 <- with(df1, which(STAND == "TEN YEAR VAR RET" & Plot1 %in%  c("1", "2")& X == "L"))
#row index for those that doesn't belong to the above 2
i3 <- which(!seq_len(nrow(df1)) %in% c(i1, i2))
#X值为“s”的行索引
i1数据

df <- read.table(text="
             STAND Plot1 X    DBH   Spec   HT
'TEN YEAR VAR RET'     1 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     2 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     2 L   1.25    ASH   NA                   
'TEN YEAR VAR RET'     1 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     3 L   1.25    ASH   NA                   
'AAAAAAAAAAAAAAAA'     2 s   1.25    ASH   NA                   
'AAAAAAAAAAAAAAAA'     3 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     2 s   1.25    ASH   NA",stringsAsFactors=F,header=T)
df%
变异(次数=情况下)(
图1==1~2,#%
嵌套%$%
map2_dfr(数据,时间,~.x[rep(seq(nrow(.x)),每个=.y),]))
#A tibble:18x6
#支架图1 X胸径规格HT
#                    
#1十年期风险回报率1 s 1.25灰分NA
#2十年期风险RET 1 s 1.25不适用
#3十年期风险RET 1 s 1.25灰分NA
#4十年期风险RET 1 s 1.25灰分NA
#5十年期风险RET 2 s 1.25灰分NA
#6十年期风险RET 2 s 1.25灰分NA
#7十年期风险RET 2 s 1.25灰分NA
#8十年期VAR RET 2 L 1.25灰分NA
#9十年期VAR RET 2 L 1.25灰分NA
#10十年期VAR RET 2 L 1.25灰分NA
#11 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#12 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#13 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#14十年期风险RET 2 s 1.25不适用
#15十年期风险RET 2 s 1.25灰分NA
#16十年期风险RET 2 s 1.25不适用
#17十年期风险RET 3 L 1.25灰分NA
#18 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
数据

df <- read.table(text="
             STAND Plot1 X    DBH   Spec   HT
'TEN YEAR VAR RET'     1 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     2 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     2 L   1.25    ASH   NA                   
'TEN YEAR VAR RET'     1 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     3 L   1.25    ASH   NA                   
'AAAAAAAAAAAAAAAA'     2 s   1.25    ASH   NA                   
'AAAAAAAAAAAAAAAA'     3 s   1.25    ASH   NA                   
'TEN YEAR VAR RET'     2 s   1.25    ASH   NA",stringsAsFactors=F,header=T)
df%
变异(次数=情况下)(
图1==1~2,#%
嵌套%$%
map2_dfr(数据,时间,~.x[rep(seq(nrow(.x)),每个=.y),]))
#A tibble:18x6
#支架图1 X胸径规格HT
#                    
#1十年期风险回报率1 s 1.25灰分NA
#2十年期风险RET 1 s 1.25不适用
#3十年期风险RET 1 s 1.25灰分NA
#4十年期风险RET 1 s 1.25灰分NA
#5十年期风险RET 2 s 1.25灰分NA
#6十年期风险RET 2 s 1.25灰分NA
#7十年期风险RET 2 s 1.25灰分NA
#8十年期VAR RET 2 L 1.25灰分NA
#9十年期VAR RET 2 L 1.25灰分NA
#10十年期VAR RET 2 L 1.25灰分NA
#11 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#12 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#13 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#14十年期风险RET 2 s 1.25不适用
#15十年期风险RET 2 s 1.25灰分NA
#16十年期风险RET 2 s 1.25不适用
#17十年期风险RET 3 L 1.25灰分NA
#18 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

感谢您提供此解决方案!我尝试过,但出于某种原因,我的大型绘图重复了500次。这正是我使用的代码:@sashanikolaeva它基于您的示例,我得到了正确的输出。如果您查看
rep(i2,each=n2)
和'i2'基于
X=“L”
是的,我检查了n号,看起来都是正确的。但我也在那里添加了其他支架,因此看起来像i1、i2、i4、i5等。当我检查原始数据框中的行数以获得大型绘图并将其乘以重复次数(20),该数字不等于我在数据帧DF2中获得的行数。DF2中的行数要高得多…@sashanikolaeva我不确定i4、i5等。感谢您提供此解决方案!我尝试过,但出于某种原因,我的大型绘图重复了500次。这是我使用的确切代码:@sashanikolaeva它基于您的示例我得到了正确的输出。如果你看
rep(i2,each=n2)
和'i2'是基于
X==“L”
是的,我检查了n号,看起来都是正确的。但我也在那里添加了其他支架,因此看起来像i1、i2、i4、i5等。当我检查原始数据框中的行数以获得大型绘图并将其乘以重复次数(20),该数字不等于我在数据帧DF2中获得的行数。DF2中的行数要高得多…@sashanikolaeva我不确定i4、i5等。