根据另一列中的重复创建一列

时间:2015-12-17 17:13:11

标签: r for-loop

我有一个包含多个列的表,在其中一个列表中我需要创建一个向下流动的循环,如果存在相同的数字,则会创建另外两个列(例如,添加“p”)并在其中仅在先前创建的同一列中存在一次,例如“ - ”。任何人吗?

该列包含条形码TCGA-3M-AB47-01A-22R-A414-31我需要AB47

for(code in tabela$Barcode){
     t=sapply(strsplit(as.character(code), "-"), function(x) x[[2]]) #to extract the AB47

1 个答案:

答案 0 :(得分:0)

这基本上等同于common查找all重复问题。 (具有讽刺意味的是,very广泛duplicated。)

对于x之类的向量x = c("A", "A", "C", "B", "C", "D", "E", "F"),最常见的答案是使用duplicated函数两次,一次使用fromLast = T标记全部重复。这将给出一个布尔向量,指示每个值是否重复。将1添加到布尔值会将其从TRUE / FALSE转换为2 / 1,我们可以将其用作所需标记的子集索引:

y = c("-", "P")[(duplicated(x) | duplicated(x, fromLast = T)) + 1]