Как подсчитать количество вхождений в указанном столбце c, которые соответствуют условию (4 буквы) - PullRequest
0 голосов
/ 06 февраля 2020
x = c(1,2,3,4,5)
y = c("AA","BB","CC", "AAAA","BBBB")
data1 = data.frame(x,y)
data1

^^ Я хочу, чтобы выводом было количество раз, когда 4 буквы встречаются в столбце y. Желаемый результат будет 2

Я хочу подсчитать, сколько раз 4-буквенные факторные наблюдения происходят в данном столбце в кадре данных. Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Может быть, вы можете попробовать nchar, если у вас есть строки в столбце y, всегда состоящие из букв

sum(nchar(as.vector(data1$y))==4)

# > sum(nchar(as.vector(data1$y))==4)
#   2
0 голосов
/ 06 февраля 2020

Если вы хотите только извлечь и посчитать значения факторов, которые имеют ровно 4 буквы ( любые буквы, необязательно то же ), то вы можете сделать это:

Шаг 1 - Определить шаблон для сопоставления:

pattern <- "\\w{4}"

Шаг 2 - Определить функцию для извлечения только необработанных совпадений:

extract <- function(x) unlist(regmatches(x, gregexpr(pattern, x, perl = T)))

Шаг 3 - Применить функция к интересующим данным:

extract(data1$y)

И вот результат:

[1] "AAAA" "BBBB"

Шаг 4 - Для подсчета количества совпадений вы можете использовать length:

length(extract(data1$y))
[1] 2

РЕДАКТИРОВАТЬ : В качестве альтернативы вы можете использовать str_extract из пакета stringr:

ШАГ 1: сохранить результат в векторе extr:

extr <- str_extract(data1$y, "\\w{4}")

ШАГ 2: используя length, оператор отрицания ! и is.na, функцию, которая проверяет NA и оценивает TRUE и FALSE, вы можете подсчитать, сколько раз тест проверяет на FALSE :

length(extr[!is.na(extr)])
[1] 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...