Cómo crear un marco de datos con la función "filter"

Buenas noches.

Estoy aprendiendo " R " y estoy atascada con un ejercicio de un curso que estoy haciendo sobre análisis de datos con R.
Concretamente, debo realizar un marco de datos con la función "filter" con dos variables. Para ello he escrito esta sintaxis:

best_trimmed_flavors_df <- trimmed_flavors_df %>%

  • filter(Cocoa Percent == <70, Rating == <3.5)

A darle a ejecutar me sale este mensaje:

"Error: unexpected symbol in:
"best_trimmed_flavors_df <- trimmed_flavors_df %>%
filter(Cocoa Percent" "

Si alguien me puede ayudar se lo agradecería.

Gracias

1 Like

Se falta _ ; debe ser Cocoa_Percent

1 Like

Buenos días, technocrat.

Lo primero darte las gracias por responder a mi duda.

He realizado lo que me has indicado, aunque el nombre de la columna en la base de dato es " Cocoa Percent", pero me sigue dando error. Concretamente, éste:

best_trimmed_flavors_df <- trimmed_flavors_df %>%

  • filter(Cocoa_Percent== <70% & Rating == <3.5)
    Error: unexpected '<' in:
    "best_trimmed_flavors_df <- trimmed_flavors_df %>%
    filter(Cocoa_Percent== <"

Gracias de nuevo

Ana María

filter(Cocoa_Percent < = 70% & Rating <= 3.5)

Gracias, jrkrideau por responderme.

Lo he intentado y me sigue saliendo error.

best_trimmed_flavors_df <- trimmed_flavors_df %>%

  • filter(Cocoa_Percent<=70%&Rating<=3.5)
    Error: unexpected input in:
    "best_trimmed_flavors_df <- trimmed_flavors_df %>%
    filter(Cocoa_Percent<=70%&Rating<=3.5)"

Gracias de nuevo

Ana María

Si necesitas ayuda con un data frame específico, necesitamos que nos proporciones un "ejemplo mínimo reproducible" a al menos datos de muestra en un formato amigable con copiar/pegar.

Para ayudarnos a ayudarte, podrías preparar un "Ejemplo Reproducible" (REPREX en ingles) ilustrando tu problema? Un ejemplo reproducible hace que sea mucho más fácil para otros entender tu problema y averiguar como ayudar.

Por favor revisa esta guía para ver como crear uno:

Entonces necesitamos más de su código y algunos datos de muestra. (máquina traductora)

A handy way to supply some sample data is the dput() function. In the case of a large dataset something like dput(head(mydata, 100)) should supply the data we need. Just do dput(mydata) where mydata is your data. Copy the output and paste it here.

Creo que el problema aquí es que has olvidado cargar el paquete dplyr(con library(dplyr)), ya que la función filter() que viene con R (base) tiene una sintaxis diferente a la de dplyr::filter().

Recuerda que los paquetes sólo necesitan ser instalados una vez, pero tienes que cargarlos en cada nueva sesión R en la que quieras usarlos

Hola, buenas tardes.
Estoy trabajando con un conjunto de datos que me descargado de Kaggle, concretamente " Chocolate Bar Ratings".
Les dejo el enlace: Chocolate Bar Ratings | Kaggle.
He cargado el paquete de tidyverse y la librería de tidyverse y dplyr.
Con anterioridad a este marco de datos que estoy intentado crear, he creado un marco de datos con este código, que me ha salido correcto:

trimmed_flavors_df <-flavors_df %>% select(“Cocoa Percent”,”Company Location”,”Rating”)

Y después he realizado este código, que también me ha funcionado:
trimmed_flavors_df %>%

  • group_by(Rating)%>%

  • drop_na()%>%

  • summarise(max_Rating = max(Rating))

Pero ahora necesito crear otro marco de datos, llamado " best_trimmed_flavors_df " y para ello utilizo el último marco de datos para intentar filtrar las barras de chocolate que contienen al menos 70% de cacao y que tienen una calificación de al menos 3.5 puntos..
Para ello utilizo el código que me está dando problemas.

best_trimmed_flavors_df <- trimmed_flavors_df %>% filter(Cocoa Percent <=70% & Rating <=3.5)

Gracias por vuestro interés

Ana María

Buenas tardes, andresrcs.

Gracias por contestar a mi duda.

He realizado lo que me has dicho y me sigue saliendo error:

install.packages("dblyr")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/VICENTE/AppData/Local/R/win-library/4.2’
(as ‘lib’ is unspecified)
Warning in install.packages :
package ‘dblyr’ is not available for this version of R

A version of this package for your version of R might be available elsewhere,
see the ideas at

library(dplyr)

best_trimmed_flavors_df <- trimmed_flavors_df %>%

  • filter(Cocoa_Percent <=70% & Rating<=3.5)
    Error: unexpected input in:
    "best_trimmed_flavors_df <- trimmed_flavors_df %>%
    filter(Cocoa_Percent <=70% & Rating<=3.5)"

Gracias de nuevo.

Ana María

Creo que esto es lo que estás tratando de hacer

library(dplyr)
library(tidyr)

url <- "https://storage.googleapis.com/kagglesdsdata/datasets/1919/3310/flavors_of_cacao.csv?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=gcp-kaggle-com%40kaggle-161607.iam.gserviceaccount.com%2F20230221%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20230221T154700Z&X-Goog-Expires=259200&X-Goog-SignedHeaders=host&X-Goog-Signature=49389af2dd273ca8b017925eed86848b78a0c4c9744254219ba2b001aed97b7ae07ebb8ad417e4d856fd286005a57ddbbf0e987537d4506ff0f358be3c1e7d8d37beefd04a8f859e61f0217d6c788a016a08f0faf648793c605d5b1f9fdac1410c708a921357274dd1603d36d5d31d0309f10cf25e1c7ef276c5716d334266ad2399ec21c0a402a0c15d9e9a074a027766e9832b65e909d78db8aa5bf5df31fc78762ffa6033b37bd39b004950f39c89657af5193d08e5b5115159fcd94de917c368d3a446843857553e7996b766f34e953d900093a09ae165a9c7b2439e048cf4ae2b8a77fdf6bf0e8897cd0e0445184ace883e0a5714a5d155214a870b1800"

download.file(url, "flavors.csv")

flavors_df <- read.csv("flavors.csv")

flavors_df %>%
    as_tibble() %>% 
    drop_na()%>%
    mutate(Cocoa.Percent = readr::parse_number(Cocoa.Percent)) %>% 
    filter(Cocoa.Percent >= 70, Rating >= 3.5)
#> # A tibble: 575 × 9
#>    Company...Make…¹ Speci…²   REF Revie…³ Cocoa…⁴ Compa…⁵ Rating Bean.…⁶ Broad…⁷
#>    <chr>            <chr>   <int>   <int>   <dbl> <chr>    <dbl> <chr>   <chr>  
#>  1 A. Morin         Akata    1680    2015      70 France    3.5          Togo   
#>  2 A. Morin         Quilla   1704    2015      70 France    3.5          Peru   
#>  3 A. Morin         Cuba     1315    2014      70 France    3.5          Cuba   
#>  4 A. Morin         Sur de…  1315    2014      70 France    3.5  Criollo Venezu…
#>  5 A. Morin         Puerto…  1319    2014      70 France    3.75 Criollo Venezu…
#>  6 A. Morin         Pablino  1319    2014      70 France    4            Peru   
#>  7 A. Morin         Equate…  1011    2013      70 France    3.75         Ecuador
#>  8 A. Morin         Chuao    1015    2013      70 France    4    Trinit… Venezu…
#>  9 A. Morin         Chanch…  1019    2013      70 France    3.5          Peru   
#> 10 A. Morin         Bolivia   797    2012      70 France    3.5          Bolivia
#> # … with 565 more rows, and abbreviated variable names
#> #   ¹​Company...Maker.if.known., ²​Specific.Bean.Origin.or.Bar.Name,
#> #   ³​Review.Date, ⁴​Cocoa.Percent, ⁵​Company.Location, ⁶​Bean.Type,
#> #   ⁷​Broad.Bean.Origin

Created on 2023-02-21 with reprex v2.0.2

El paquete se llama dplyr no dblyr

Ahora que he podido reivsar los datos noto que Cocoa_Percent es de tipo "character" por lo que no puedes aplicar el operador <= directamente, necesitas convertirlo a numerico antes (como hago en el ejemplo que te di)

Gracias, andresrcs.

Eso es exactamente lo que quería hacer.
Yo para cargar la base de datos me he ido directamente a " Import text Data " y le puesto en el apartado " Name " el nombre " flavors_df.
Seguramente por eso no me salía.
Gracias ya he aprendido otra manera de cargar las bases de datos.
Gracias

solo uno de igualdad o menos que símbolos, no ambos

This topic was automatically closed 42 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.