R - 计算管道列表中的项目数

时间:2016-04-06 11:16:06

标签: r count aggregate

我有一个带有管道标识符列表的列

Identifier
O75496|P62979|P62987|P0CG47|P0CG48|O00487|P25786
P28066|P60900|O14818|P20618|P40306
Q99436|P28062|P28065
P28062|P28065|P62191|P35998|P17980|P43686

如何在每行中生成一列标识符? 输出读取这样的东西

Identifier                                          Count
O75496|P62979|P62987|P0CG47|P0CG48|O00487|P25786    7
P28066|P60900|O14818|P20618|P40306                  5
Q99436|P28062|P28065                                3
P28062|P28065|P62191|P35998|P17980|P43686           6

提前致谢!

2 个答案:

答案 0 :(得分:1)

sapply(strsplit(df$Identifier, '[|]'), length)

对于特殊情况,只需添加unique函数

即可
sapply(strsplit(df$Identifier, '[|]'), function(i) length(unique(i)))

答案 1 :(得分:1)

没有拆分的基本R选项将是

df1$Count <- nchar(gsub("[^|]", "", df1$Identifier)) + 1L
df1$Count
#[1] 7 5 3 6

gregexpr

sapply(gregexpr("[|]", df1$Identifier), 
      function(x) sum(attr(x, "match.length"))+1)
#[1] 7 5 3 6