从一个有组的文件中取每n行,n是列中给定的

2024-10-02 18:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看到了here和{a2}如何返回第n行;但我的问题不同。文件中的一个单独的列提供了有关返回哪个第n个元素的详细信息;这些元素因组而异。下面是一个数据集示例,Nth列提供要返回的行。也就是说,对于Ida每隔3行,对于Idb每4行。数据相当大,包含多个Id组。在

Id  TagNo   Nth
a   A-A-3   3
a   A-A-1   3
a   A-A-5   3
a   A-A-2   3
a   AX-45   3
a   AX-33   3
b   B-B-5   4
b   B-B-4   4
b   B-B-3   4
b   BX-B2   4 

期望输出:

^{pr2}$

谢谢你的帮助。在

编辑:请注意,我想从first和每n个项目开始挑选;也就是说,每三个项目a和第四个项目{}。对于组a,它将是1st,4th, 7th。。。对于b组,它将是1st,5th, 9th行。原始输出有错误,已进行编辑。我真诚的道歉。在


Tags: 文件数据项目ida2元素编辑示例
3条回答

对于awk溶液

$ cat awk-sc
{
  if(id==$1){
    nth--;
    if(nth==0){print; nth=$3}
  } else {
    id=$1;nth=$3;print
  }
}

$ awk -f awk-sc file
Id  TagNo   Nth
a   A-A-3   3
a   A-A-2   3
b   B-B-5   4

这个awk应该可以工作:

awk '!a[$1]++{print; if(NR>1) n=NR+$3} NR==n{print; n=NR+$3}' file

Id  TagNo   Nth
a   A-A-3   3
a   A-A-2   3
b   B-B-5   4

R溶液:

do.call(rbind, lapply(split(df, df$Id), function(x) x[seq(from = 1, to = nrow(x), by = unique(x$Nth)), ]))

    Id TagNo Nth
a.1  a A-A-3   3
a.4  a A-A-2   3
b    b B-B-5   4

相关问题 更多 >