Risposte al Forum Create

Stai vedendo 15 articoli - dal 1 a 15 (di 394 totali)
  • Autore
    Articoli
  • in risposta a: problema importazione dati csv #7540
    Davide Massidda
    Davide Massidda
    Moderatore

    Ciao gipo, è evidente che nei dati c’è ancora qualcosa che non va, perché la funzione gsub non cambia comportamento con vettori più lunghi di 99 valori.

    in risposta a: problema importazione dati csv #7538
    Davide Massidda
    Davide Massidda
    Moderatore

    Sicuramente c’è un modo per risolvere, ma evidentemente c’è qualcosa nelle caratteristiche dei dati che ci sfugge.

    Il codice che ho postato prima risolve il problema del dollaro, ma evidentemente non è l’unico inghippo. Infatti, se prendiamo un valore fatto così:

    > x <- "$1500"

    La funzione gsub rimuove il dollaro:

    > gsub("\\$", "", x)
    [1] "1500"

    Il risultato è sempre un carattere, ma con as.numeric lo si trasforma in numero.

    Forse anche gli apici “ sono inclusi nella stringa? Potresti postare il vettore dei primi cinque valori?

    in risposta a: problema importazione dati csv #7536
    Davide Massidda
    Davide Massidda
    Moderatore

    Tutto molto chiaro, quindi è esattamente quello che avevo in mente: la variabile non contiene numeri, ma contiene stringhe dalle quali bisogna estrarre i numeri. R trova “$1500” invece di trovare “1500” e quindi non può convertire la variabile in numerica.

    Puoi provare così:
    dataset$variabile <- as.numeric(gsub("\\$", "", as.character(dataset$variabile)))

    in risposta a: problema importazione dati csv #7534
    Davide Massidda
    Davide Massidda
    Moderatore

    Ciao gipo, penso che la cosa più probabile sia che ha ragione R: le colonne che dovrebbero essere numeri e che vengono rese come carattere contengono qualche valore che non può essere convertito in numerico. Quindi andrei a caccia di quello per prima cosa.

    Puoi aiutarti anche con R, in questo modo.

    Per prima cosa, rendi numerica la tua variabile:
    dataset$variabile <- as.numeric(dataset$variabile)
    Se ci sono valori che non posso essere convertiti in tipo numerico, R ti restituirà un avviso e questi dati saranno resi come missing values, ossia NA. Puoi capire dove si trovano in questo modo:
    dataset[is.na(dataset$variabile),]

    in risposta a: Simulazioni potenza e numerosità campionaria pacchetto simr #7518
    Davide Massidda
    Davide Massidda
    Moderatore

    Ciao Giulia,

    casa incombenze di vario tipo purtroppo il sito è fermo da molti anni e solo sporadicamente riusciamo a seguire le richieste che pervengono. Provo a darti una mano, anche se premetto che non ho le informazioni che cerchi.

    Per prima cosa vorrei farti ragionare su alcuni aspetti perversi della questione che purtroppo non dipendono da te.

    Per prima cosa, non mi è mai capitato che un revisore mi chiedesse una stima della numerosità campionaria a studio già fatto. Questa è una richiesta che può arrivare quando un esperimento viene registrato, quando una pianificazione di uno studio viene presentato a un comitato di qualche tipo, ma chiederlo a giochi già chiusi non ha veramente alcun senso.

    Inoltre, la richiesta che ti è arrivata è stimare la numerosità campionaria… in base a quale criterio? La potenza del test? La potenza è comunemente un indice che si presenta in associazione al p-value, ma i modelli a effetti misti non forniscono un p-value. La questione diventa quindi molto contorta.

    E se la numerosità del tuo campione dovesse risultare troppo bassa, che si fa? Lo studio è già fatto! In questo caso, semmai, dovrebbero chiederti di fornire la potenza dei test e sulla base di queste informazioni si fanno i ragionamenti. Ma, come dicevo prima, tu non hai p-value.

    Relativamente al primo problema che segnali, ovvero il fatto che tu stai simulando dati con rnorm ma la tua variabile risposta non è normale, teoricamente non vedo problemi. Tu hai una variabile non normale, che normalizzi con una trasformazione (il logaritmo). Se la tua trasformazione ha successo dovresti ottenere una variabile normale, quindi al tuo modello una variabile normale dai in pasto.

    Per quanto riguarda il secondo problema penso che si tratti di un problema di convergenza di lmer, ma su questo ci ritorno dopo aver fatto qualche ricerca.

    in risposta a: Calcolare gradi di libertà per CFA e SEM: utile shiny app #7485
    Davide Massidda
    Davide Massidda
    Moderatore

    Ciao Francesco, in effetti è un problema su cui in passato mi sono trovato a dovermici arrovellare, grazie per la risorsa!

    in risposta a: Data e valori nulli #7484
    Davide Massidda
    Davide Massidda
    Moderatore

    Ciao Max, esistono diverse strategie per affrontare il problema.

    Secondo me il metodo più astuto è quello di dichiarare, in fase di importazione dati, quali sono i valori da codificare come dato mancante (NA) in R. Questo dipende chiaramente dalla funzione che tu stati utilizzando per l’importazione; le funzioni di R base come read.table e read.csv sono dotate dell’argomento na.strings che puoi utilizzare per questo scopo (es. na.strings = c('', 'N/A')).

    In alternativa, puoi correggere la tua variabile in questo modo:
    dt$year[dt$year == 'N/A'] <- NA

    in risposta a: Conteggio coppie di persone #7480
    Davide Massidda
    Davide Massidda
    Moderatore

    Ciao, se utilizzi questo codice:

    library(tidyverse)
    
    tab <- tribble(~Eroe1, ~Eroe2,
        "Hulk", "Iron-man",
        "Hulk", "Thor",
        "Iron-man", "Hulk"
    )
    
    eroi <- sort(unique(c(tab$Eroe1, tab$Eroe2)))
    
    tab %>%
        mutate(
            Eroe1 = factor(Eroe1, levels = eroi),
            Eroe2 = factor(Eroe2, levels = eroi)
        ) %>%
        group_by(Eroe1, Eroe2) %>%
        summarise(Count = n()) %>%
        ungroup() %>%
        complete(Eroe1, Eroe2, fill = list(Count = 0))

    Potrai ottenere questo:

    # A tibble: 9 x 3
      Eroe1    Eroe2    Count
      <fct>    <fct>    <dbl>
    1 Hulk     Hulk         0
    2 Hulk     Iron-man     1
    3 Hulk     Thor         1
    4 Iron-man Hulk         1
    5 Iron-man Iron-man     0
    6 Iron-man Thor         0
    7 Thor     Hulk         0
    8 Thor     Iron-man     0
    9 Thor     Thor         0
    in risposta a: errore variabile non numerica #7421
    Davide Massidda
    Davide Massidda
    Moderatore

    Dipende da quale metodo stai utilizzando per importare i dati. Generalmente le funzioni prevedono un argomento del tipo: dec = ",". Oppure, se stai utilizzando read.csv, puoi usare al suo posto rad.csv2.

    in risposta a: errore variabile non numerica #7419
    Davide Massidda
    Davide Massidda
    Moderatore

    Il fatto che non ti visualizzi tutte le righe non è un problema: il comando str è fatto per visualizzare la struttura di un dataset, per non per visualizzare il dataset.
    Come puoi vedere, le prime quattro colonne sono di tipo carattere e non numerico, e immagino che il problema sia che in fase di importazione non hai specificato che il separatore decimale è la virgola e non il punto.

    Se posso darti un consiglio, quando importi i dati in R, la PRIMA cosa che devi fare è controllare che l’importazione abbia generato un dataset come te lo aspetti, perché non è affatto scontato (come in questo caso).

    in risposta a: errore variabile non numerica #7417
    Davide Massidda
    Davide Massidda
    Moderatore

    Indubbiamente c’è stato qualche problema in fase d’importazione: è probabile che fra i tuoi dati ci sia qualche elemento che non è un numero che ha fatto saltare tutto. Hai già provato a visualizzare la struttura dei dati per vedere se è tutto a posto?

    str(tuo_dataset)

    in risposta a: Problema con la funzione ISOdatetime #7413
    Davide Massidda
    Davide Massidda
    Moderatore

    Ti fornisco una soluzione rapida. Prima di tutto, converti la colonna Data in una variabile che sia per davvero di tipo data:

    dati$Data <- as.Date(as.character(dati$Data), format = "%d/%m/%Y")

    A questo punto, usa ISOdatetime in questo modo:

    ISOdatetime(
        year = format(dati$Data,"%Y"),
        month = format(dati$Data, "%m"),
        day = format(dati$Data, "%d"),
        hour = dati$Ora, sec = dati$Data, min = dati$Ora
    )
    in risposta a: Problema con la funzione ISOdatetime #7411
    Davide Massidda
    Davide Massidda
    Moderatore

    Ok, capito, si risolve facilmente. Dovresti però postarmi il risultato del comando:
    str(dati$Data)
    perché ho bisogno di capire come la data è stata formattata.

    A proposito: grazie per avermi fatto conoscere il comando ISOdatetime, mi tornerà certamente molto utile in futuro 😉

    in risposta a: Problema con la funzione ISOdatetime #7409
    Davide Massidda
    Davide Massidda
    Moderatore

    Ciao, c’è qualcosa di strano in quello che fai. Non so esattamente che cosa contenga la colonna dati$Data, ma vedo che la passi sia all’argomento year, che a month che a day. Ognuno di questi argomenti chiede che gli venga passata una cosa differente (rispettivamente: l’anno, il mese e il giorno), e non sempre la stessa cosa (qualsiasi essa sia).

    Davide Massidda
    Davide Massidda
    Moderatore

    Tu quindi ti ritrovi con una variabile di questo tipo:

    > x <- c("2020;05;03;a;b;c", "2020;05;04;d;e;f")

    che può essere suddivisa in questo modo:

    > x_split <- strsplit(x, ";")

    > x_split
    [[1]]
    [1] "2020" "05"   "03"   "a"    "b"    "c"   
    
    [[2]]
    [1] "2020" "05"   "04"   "d"    "e"    "f"

    Puoi estrarre gli elementi così:
    > anno <- sapply(x_split, "[[", 1)
    > mese <- sapply(x_split, "[[", 2)
    > giorno <- sapply(x_split, "[[", 3)

    > anno
    [1] "2020" "2020"
    > mese
    [1] "05" "05"
    > giorno
    [1] "03" "04"

    Per poi unirli in una data:

    > x_new <- as.Date(paste(anno, mese, giorno, sep="-"))
    
    > x_new
    [1] "2020-05-03" "2020-05-04"
    
    > str(x_new)
     Date[1:2], format: "2020-05-03" "2020-05-04"
Stai vedendo 15 articoli - dal 1 a 15 (di 394 totali)