studio - Cómo contar la frecuencia de una cadena para cada fila en R
seleccionar filas en r (2)
Tengo un archivo .txt que se parece a esto:
rs1 NC AB NC
rs2 AB NC AA
rs3 NC NC NC
...
Para cada fila, me gustaría contar las frecuencias de "NC", para que mi salida sea algo como a continuación:
rs1 2
rs2 1
rs3 3
...
¿Alguien puede decirme cómo hacer esto en R o en Linux? ¡Muchas gracias!
dat <- read.table(text="rs1 NC AB NC rs2 AB NC AA rs3 NC NC NC")
dat <- rbind(dat, dat, dat, dat)
Puede usar una
table
rowwise para obtener las frecuencias por fila. En este caso, para la fila 1 a 4, las frecuencias son iguales a medida que copié los datos.
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
Si desea tener frecuencias agregadas en todas las filas, use
rowSums(freq)
AA AB NC rs1 rs2 rs3
4 8 24 4 4 4
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
Podemos usar
rowSums
en la matriz que se crea a partir de esta expresión
df[-1] == "NC"
.