R 添加复制值直到指定行
我的文件看起来像 头部(df) 所以我想添加一个新的列,它的值为group1,直到第二组的行。 加速结果是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
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"))