dee*_*fan 5 python bash shell awk r
我在这里和这里看到了如何返回每一行; 但我的问题不同.文件中的单独列提供有关要返回的第n个元素的详细信息; 根据小组不同而不同.以下是数据集的示例,其中Nth列提供要返回的行.也就是说,对于Id组a每3行和Id组b每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
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Id TagNo Nth
a A-A-3 3
a A-A-2 3
b B-B-5 4
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
编辑:请注意我想从first每个第n项开始挑选; 这是第3 a和第4 b.对于组a,它将1st,4th, 7th...对于组b,它将是1st,5th, 9th行.原始输出有错误并且已完成编辑.真诚的道歉.
这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
Run Code Online (Sandbox Code Playgroud)
基本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
Run Code Online (Sandbox Code Playgroud)