2017-02-14 10 views
2

У меня есть огромный dataframe DF1, чья упрощенно версия состоит из 3-х колонок, «Слова», «Frequency» и «Письма»:R. Считайте конкретные символы из столбца, связанные с двойными категориями другого столбца. Делайте это итеративно на основе частотных бинов

Words   Frequency Letters 
flower/tree  0.15  a(0.1) 
tree   0.67  a(0.4) 
planet   0.85  b(0.4) 
tree/planet  0.42  c(0.5) 
tree   0.89  a(0.6) 
flower   0.21  b(0.4) 
flower/planet 0.53  b 
planet   0.07  a 

Использование R (dplyr, применять семью функции и т. д.). Я хотел бы подсчитать количество раз, когда каждая буква (a, b, c) столбца «Письмо» связана с каждым словом из столбца «Слово» (цветок, дерево, планета) в итеративный способ, зависящий от частотного буфера значений столбца «Частота». Есть 4 бункера: [0, 0.25], [0.25, 0.5], [0.5, 0.75], [0.75, 1].

Я ожидаю dataframe df2 выход, который выглядит примерно так:

Bin  Word Letters count_letters 
0-0.25 flower a   1 
0-0.25 flower b   1 
0-0.25 tree a   1 
0-0.25 planet a   1 
0.25-0.5 tree c   1 
0.25-0.5 planet c   1 
0.5-0.75 flower b   1 
0.5-0.75 tree a   1 
0.5-0.75 planet b   1 
0.75-1 tree a   1 
0.75-1 planet b   1 
+0

Каковы числа в круглых скобках после букв? – alistaire

+0

@ Лукас его вопрос был о круглых скобках, а не о письмах. – zacdav

ответ

4

Вы можете использовать cut в бункер Frequency, substrLetters чистить и tidyr::separate_rows в unnest Word. Совокупность с dplyr::count, и вы настроены:

library(tidyverse) 

df %>% separate_rows(Words) %>% 
    count(Words, 
      Letters = substr(Letters, 1, 1), # use regex if more than one letter 
      Frequency = cut(Frequency, breaks = seq(0, 1, .25))) 

## Source: local data frame [11 x 4] 
## Groups: Frequency, Words [?] 
## 
##  Frequency Words Letters  n 
##  <fctr> <chr> <chr> <int> 
## 1 (0,0.25] flower  a  1 
## 2 (0,0.25] flower  b  1 
## 3 (0,0.25] planet  a  1 
## 4 (0,0.25] tree  a  1 
## 5 (0.25,0.5] planet  c  1 
## 6 (0.25,0.5] tree  c  1 
## 7 (0.5,0.75] flower  b  1 
## 8 (0.5,0.75] planet  b  1 
## 9 (0.5,0.75] tree  a  1 
## 10 (0.75,1] planet  b  1 
## 11 (0.75,1] tree  a  1 

 Смежные вопросы

  • Нет связанных вопросов^_^