Извлекайте частоты из логических списков для каждого ряда - PullRequest
0 голосов
/ 27 февраля 2020

Имея такой фрейм данных:

data.frame(id = c(1,1), matrix = c("c(\"TRUE\", \"TRUE\")", "c(\"FALSE\", \"TRUE\", \"FALSE\")"))
id                      matrix
1  1           c("TRUE", "TRUE")
2  1 c("FALSE", "TRUE", "FALSE")

Как можно посчитать для каждой строки частоты true, false и total?

Пример ожидаемого результата

id true_num false_num frq_list
1     2        0         2
1     1        2         3

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете попробовать это с помощью регулярных выражений, поскольку ваш «логический» вектор уже является просто строкой:

library(tidyverse)
data.frame(id = c(1,1), matrix = c("c(\"TRUE\", \"TRUE\")", "c(\"FALSE\", \"TRUE\", \"FALSE\")")) %>% 
  transmute(id = id,
            true_num = str_count(matrix, pattern = 'T'),
            false_num = str_count(matrix, pattern = 'F'),
            frq_list = true_num + false_num)
#>   id true_num false_num frq_list
#> 1  1        2         0        2
#> 2  1        1         2        3

Является ли это действительно хорошей идеей - это другой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...