ComeçarComece de graça

Transformando variáveis contínuas em lógicas

Variáveis lógicas são úteis porque muitas vezes é mais fácil pensar em termos de "sim ou não" do que em termos numéricos. Por exemplo, se alguém pergunta "Você gostaria de uma xícara de chá?", uma resposta sim ou não é preferível a "Há 0,73 de chance de eu querer uma xícara de chá". Isso também tem aplicações reais em data science. Por exemplo, um teste de diabetes pode retornar a concentração de glicose no plasma sanguíneo do paciente como um número. O que realmente importa é "O paciente tem diabetes?", então você precisa converter o número em um valor lógico, com base em algum limiar.

Em R base, isso é feito de forma simples, usando algo assim:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Todas as funções de transformação de features do sparklyr têm uma interface semelhante. Os três primeiros argumentos são sempre um tibble do Spark, uma string com o nome da coluna de entrada e uma string com o nome da coluna de saída. Ou seja, seguem este padrão.

a_tibble %>%
  ft_some_transformation("x", "y", some_other_args)

A forma no sparklyr de converter uma variável contínua em lógica usa ft_binarizer(). O exemplo anterior de diabetes pode ser reescrito como o seguinte. Observe que o valor de threshold deve ser um número, não uma string que se refere a uma coluna do conjunto de dados.

diabetes_data %>%
  ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)

Seguindo a filosofia do Spark de usar DoubleType em todo lugar, a saída de ft_binarizer() não é realmente lógica; ela é numeric. Essa é a abordagem correta para permitir que você continue trabalhando no Spark e realize outras transformações, mas, se quiser processar seus dados em R, lembre-se de converter explicitamente os dados para lógico. O padrão de código a seguir é comum.

a_tibble %>%
  ft_binarizer("x", "is_x_big", threshold = threshold) %>%
  collect() %>%
  mutate(is_x_big = as.logical(is_x_big))

Este exercício considera o nome nada feliz artist_hotttnesss, que fornece uma medida de quanto burburinho na mídia o artista tinha na época em que o conjunto de dados foi criado. Se você quiser aprender mais sobre como fazer gráficos com o pacote ggplot2, faça o curso Introduction to Data Visualization with ggplot2.

Este exercício faz parte do curso

Introdução ao Spark com sparklyr em R

Ver curso

Instruções do exercício

Uma conexão com o Spark foi criada para você como spark_conn. Um tibble vinculado aos metadados das faixas armazenado no Spark já foi definido como track_metadata_tbl.

  • Crie uma variável chamada hotttnesss a partir de track_metadata_tbl.
    • Selecione o campo artist_hotttnesss.
    • Use ft_binarizer() para criar um novo campo, is_hottt_or_nottt, que é verdadeiro quando artist_hotttnesss é maior que 0.5.
    • Faça o collect do resultado.
    • Converta o campo is_hottt_or_nottt para lógico.
  • Desenhe um gráfico de barras com ggplot() de is_hottt_or_nottt.
    • O primeiro argumento de ggplot() é o argumento de dados, hotttnesss.
    • O segundo argumento de ggplot() é a estética, is_hottt_or_nottt dentro de aes().
    • Adicione geom_bar() para desenhar as barras.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

hotttnesss <- track_metadata_tbl %>%
  # Select artist_hotttnesss
  ___ %>%
  # Binarize to is_hottt_or_nottt
  ___ %>%
  # Collect the result
  ___ %>%
  # Convert is_hottt_or_nottt to logical
  ___

# Draw a barplot of is_hottt_or_nottt
ggplot(___, aes(___)) +
  ___()
Editar e executar o código