Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改dataframe的每秒ID组的ID列_R_Dataframe - Fatal编程技术网

更改dataframe的每秒ID组的ID列

更改dataframe的每秒ID组的ID列,r,dataframe,R,Dataframe,我有一个带有ID列的大数据框,前8208行有ID 1,下432行有ID 2,下8208行有ID 3,下432行有ID 3,以此类推 现在我想重命名这些ID,以便前432行的ID为1.1,下432行的ID为1.2,以此类推,直到第7777:8208行的ID为1.19。然后,接下来的432行保留ID 2,对于接下来的8208行,也应该这样做:ID 2.1、2.2等,直到2.19 我已经试过了 split(x, seq(1:19)) 然后 tapply(df, split) 但这会改变行

我有一个带有ID列的大数据框,前8208行有ID 1,下432行有ID 2,下8208行有ID 3,下432行有ID 3,以此类推

现在我想重命名这些ID,以便前432行的ID为1.1,下432行的ID为1.2,以此类推,直到第7777:8208行的ID为1.19。然后,接下来的432行保留ID 2,对于接下来的8208行,也应该这样做:ID 2.1、2.2等,直到2.19

我已经试过了

    split(x, seq(1:19))
然后

 tapply(df, split)
但这会改变行的顺序,显然不会重命名ID列。 因此,基本上只有奇数ID需要更改,方法是将它们分成19个相等的部分,保持行顺序不变,并重命名这些部分,以便在.19之前使用.1、.2、.3等添加原始ID。您可以尝试:

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行中的多行。

我也认为这是可行的,而且看起来更容易一些。它会发出警告,但只是因为并非所有值都被替换

within(df2, id[df2$id %% 2 != 0] <- paste(id, rep(1:19, 432), sep = '.'))

内(df2,id[df2$id%%2!=0]谢谢,但这并没有考虑到每秒id只有432行,因此其id不需要更改。只需将奇数id分成19等份。我有156个不同的id,但只有78个(一半)有8208行,另一半有432行,总共673920行。我有点误解,我会尝试修复它。编辑为仅更改奇数ID。太好了!谢谢!!