如何计算R中每行的字符串频率

Ren*_*nee 4 r frequency count

我有一个.txt文件,看起来像这样:

rs1 NC AB NC     
rs2 AB NC AA  
rs3 NC NC NC  
...  
Run Code Online (Sandbox Code Playgroud)

对于每一行,我想计算"NC"的频率,以便我的输出如下所示:

rs1 2  
rs2 1  
rs3 3  
...
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何在R或Linux中执行此操作吗?非常感谢!

Pie*_*une 6

df$count <- rowSums(df[-1] == "NC")
#    V1 V2 V3 V4 count
# 1 rs1 NC AB NC     2
# 2 rs2 AB NC AA     1
# 3 rs3 NC NC NC     3
Run Code Online (Sandbox Code Playgroud)

我们可以rowSums在从这个表达式创建的矩阵上使用df[-1] == "NC".


Ren*_*rop 5

dat <- read.table(text="rs1 NC AB NC rs2 AB NC AA rs3 NC NC NC")
dat <- rbind(dat, dat, dat, dat)
Run Code Online (Sandbox Code Playgroud)

您可以使用 rowwisetable来获取每行的频率在这种情况下,第 1 行到第 4 行的频率与我复制数据时相等

freq <- apply(dat, 1, table)
    1 2 3 4 # row-number
AA  1 1 1 1
AB  2 2 2 2
NC  6 6 6 6
rs1 1 1 1 1
rs2 1 1 1 1
rs3 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

如果您想对所有行进行聚合频率,请使用

rowSums(freq)
AA  AB  NC rs1 rs2 rs3 
 4   8  24   4   4   4 
Run Code Online (Sandbox Code Playgroud)