R 添加复制值直到指定行

R 添加复制值直到指定行,r,R,我的文件看起来像 头部(df) 所以我想添加一个新的列,它的值为group1,直到第二组的行。 加速结果是 V1 V2 V3 1 group 1 group1 2 sc08420_82432 0.000 group1 3 sc08420_159603 0.912 group1 4 sc12525_451180 4.865 group1 5 sc12525_538935 7.156 group1 6 sc12525_402895 9.155 group1

我的文件看起来像

头部(df)

所以我想添加一个新的列,它的值为group1,直到第二组的行。 加速结果是

 V1    V2    V3
1  group     1     group1
2  sc08420_82432 0.000  group1
3 sc08420_159603 0.912  group1
4 sc12525_451180 4.865  group1
5 sc12525_538935 7.156  group1
6 sc12525_402895 9.155  group1
7  group     2      group2   
我有大约17个小组,所以这个代码是我试图做的

(1:16中的i){lengthLine[i]}#####的_组的"行"以查找要复制的行数 (我在1:16){ 结果$“V3”[组[i]的行[u]:组[i+1]的行[u]=代表(粘贴(“组”,i,sep=”“),长度[i]) } 但是,此代码不起作用。我认为R可以用简单的方法解决这个问题。

试试看

  indx <- df$V1=='group'
  df$V3 <- paste0('group', df$V2[indx][cumsum(indx)])

 df
 #             V1    V2     V3
 #1          group 1.000 group1
 #2  sc08420_82432 0.000 group1
 #3 sc08420_159603 0.912 group1
 #4 sc12525_451180 4.865 group1
 #5 sc12525_538935 7.156 group1
 #6 sc12525_402895 9.155 group1
 #7          group 2.000 group2

indx我想你的意思是
df$V3@David Arenburg谢谢,这样更好。如果他有更多的
,并且这些值不符合顺序,可能还需要检查
V2列。
> for(i in 1:16){ lengthLine[i]<-(line_for_group[i+1]-line_for_group[i])
> } ### to find the number of row to replicate

for(i in 1:16){
result$"V3"[ line_for_group[i]: line_for_group[i+1]]=rep(paste("group",i,sep=""),lengthLine[i])
}
  indx <- df$V1=='group'
  df$V3 <- paste0('group', df$V2[indx][cumsum(indx)])

 df
 #             V1    V2     V3
 #1          group 1.000 group1
 #2  sc08420_82432 0.000 group1
 #3 sc08420_159603 0.912 group1
 #4 sc12525_451180 4.865 group1
 #5 sc12525_538935 7.156 group1
 #6 sc12525_402895 9.155 group1
 #7          group 2.000 group2
df <- structure(list(V1 = c("group", "sc08420_82432", "sc08420_159603", 
"sc12525_451180", "sc12525_538935", "sc12525_402895", "group"
), V2 = c(1, 0, 0.912, 4.865, 7.156, 9.155, 2)), .Names = c("V1", 
"V2"), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5", "6", "7"))