重复出现在 2/3 列中的符号

Repeat a symbol present in 2/3 column

我有以下数据集:

column1, column 2, column 3
chr,chr,chr
220,230k,560k
,5M,10M
,0.5,0.8
3,3.3,3.5
8,10B,7B
,5B,7B
5M,,8M

我想做的是:

如果 (ex "K") 出现在 2 列中,并且另一列不存在,则将 K 放在另一列中,

如果 (ex "B") 出现在 2 列中,并且另一列不存在,则将 B 放在另一列中,

如果 (ex "M") 出现在 2 列中,并且另一列不存在,则将 B 放在另一列中,

如果单元格不存在,什么都不做

有人可以帮我解决这个问题吗?

此致

一种不太优雅的方式

df=read.table(text="
column1, column 2, column 3
220,230k,560k
,5M,10M
,0.5,0.8
3,3.3,3.5
8,10B,7B
,5B,7B
5M,,8M",h=T,sep=",",na.strings="")

t(
  apply(df,1,function(x){
    for (s in c("k","B","M")) {
      tmp=grepl(s,x)
      if (sum(tmp)==2) {
        x[!is.na(x) & !tmp]=paste0(x[!is.na(x) & !tmp],s)
      }
    }
    x
  })
)

     column1 column.2 column.3
[1,] "220k"  "230k"   "560k"  
[2,] NA      "5M"     "10M"   
[3,] NA      "0.5"    "0.8"   
[4,] "3"     "3.3"    "3.5"   
[5,] "8B"    "10B"    "7B"    
[6,] NA      "5B"     "7B"    
[7,] "5M"    NA       "8M"