Dataframe 使用ID文件替换数据集中的某些列,然后打印整个数据集

Dataframe 使用ID文件替换数据集中的某些列,然后打印整个数据集,dataframe,awk,sed,columnsorting,Dataframe,Awk,Sed,Columnsorting,仍然不熟悉编码,并且难以连接命令以获得所需的输出 我有一个以下格式的数据文件: NationalCowID,TestDate,Batch,LN,DIM,YBr,year,CH4,PLS,qtl 206004574,20141208,6,2,92,1,2014,424.4410055,NA,1 206004573,20141209,6,2,93,2,2014,436.4504712,NA,4 206004575,20141207,6,2,91,1,2014,380.94688,NA,6 20600

仍然不熟悉编码,并且难以连接命令以获得所需的输出

我有一个以下格式的数据文件:

NationalCowID,TestDate,Batch,LN,DIM,YBr,year,CH4,PLS,qtl
206004574,20141208,6,2,92,1,2014,424.4410055,NA,1
206004573,20141209,6,2,93,2,2014,436.4504712,NA,4
206004575,20141207,6,2,91,1,2014,380.94688,NA,6
206004576,20141208,6,2,92,2,2014,424.4410055,NA,7
206004579,20141209,6,2,93,2,2014,436.4504712,NA,8
206004571,20141207,6,2,91,1,2014,380.94688,NA,9
在数据中,我希望找到变量YBr==1所在的行,并用*替换该行中的所有列,NationalCowID或qtl除外。然后打印整个数据集

这就是我想要达到的目标

NationalCowID,TestDate,Batch,LN,DIM,YBr,year,CH4,PLS,qtl
206004574,20141208,*,*,*,*,*,*,*,*,1
206004573,20141209,6,2,93,2,2014,436.4504712,NA,4
206004575,20141207,*,*,*,*,*,*,*,*,6
206004576,20141208,6,2,92,2,2014,424.4410055,NA,7
206004579,20141209,6,2,93,2,2014,436.4504712,NA,8
206004571,20141207,*,*,*,*,*,*,*,*,9
我已经学会了使用sed和awk,但我正在努力超越基本的功能,并结合使用命令:

awk -F ',' '{ if ($3 == 1) sed '{s/$0/*/g}' print $0}'}' file1 > file2

任何方向都将不胜感激

由于您没有向我们显示示例预期输出,因此无法确定是否要执行以下操作。通过这个解决方案,我不会硬编码字符串
YBr
NationalCowID
的字段值,因此它也可以是动态的。你能试一下吗

awk '
BEGIN{
  FS=OFS=","
}
FNR==1{
  for(i=1;i<=NF;i++){
    if($i=="YBr"){
       field=i
    }
    if($i=="NationalCowID"){
       value=i
    }
  }
}
$field==1{
  for(i=value+1;i<=NF;i++){
       $i="*"
  }
}
1
' Input_file

很好,您已经向我们展示了您为解决此问题所做的努力,请始终在代码标记中显示预期输出。谢谢您的帮助!我将更新我的问题,因为它包含一个输出文件。我想保留最后一列(qtl)和第一列(NationalCowID)。代码的哪一部分告诉您正在保留或更改哪些列?@Cae.rich,将最后一列更改
保留为
循环的值,从
保留为(i=value+1;i@RavinderSingh13工作得非常好!非常感谢您的帮助!
NationalCowID,TestDate,Batch,LN,DIM,YBr,year,CH4,PLS,qtl
206004574,*,*,*,*,*,*,*,*,*
206004573,20141209,6,2,93,2,2014,436.4504712,NA,4
206004575,*,*,*,*,*,*,*,*,*
206004576,20141208,6,2,92,2,2014,424.4410055,NA,7
206004579,20141209,6,2,93,2,2014,436.4504712,NA,8
206004571,*,*,*,*,*,*,*,*,*