我有一个带有ID列的大型数据帧,第一个8208行有ID 1,接下来的432行有ID 2,接下来的8208行有ID 3,接下来的432行有ID 3等。
现在我想重命名ID,以便前432行具有ID 1.1,接下来的432行ID 1.2等 - 直到行7777:8208的1.19。然后接下来的432行保留ID 2,对于下一个8208,应该完成相同的操作:ID 2.1,2.2等,直到2.19。
我已经尝试了
split(x, seq(1:19))
然后
tapply(df, split)
但这会改变行的顺序,显然不会重命名ID列。 因此,基本上只需要通过将它们分成19个相等的部分来改变奇数ID,保持行顺序相同并重命名这些部分,以便原始ID添加.1,.2,.3等直到.19
答案 0 :(得分:1)
也要考虑这项工作,并且在眼睛上更容易一些。它会发出警告但只是因为并非所有值都被替换
within(df2, id[df2$id %% 2 != 0] <- paste(id, rep(1:19, 432), sep = '.'))
答案 1 :(得分:0)
你可以尝试:
df[df$id%%2!=0,"id"]=paste0(df[df$id%%2!=0,"id"],".",rep(rep(seq(1,19),each=432),length(df[df$id%%2!=0,"id"])/8208))
我假设您有多个8208行。