Home Forum Statistica con R data frame

This topic contains 16 replies and has 3 voices.

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #4913

    alessia perri
    Participant

    Salve a tutti, non so come risolvere il seguente problema:

    > y <- as.data.frame(data$yind) #reddito netto disponibile individuale
    Error in data$yind : $ operator is invalid for atomic vectors

    Dove yind è una colonna del mio dataset che contiene 36603 righe

    #4914

    Ciao Alessia,
    non riesco a capire dove possa essere il problema.
    Se provo a replicare il passaggio che hai descritto R non mi riporta tale errore:

    
     data <- data.frame(yind = c(1,11,1,1), altra_var = rep("a", 4))
     data
      yind altra_var
    1    1         a
    2   11         a
    3    1         a
    4    1         a
     y <- as.data.frame(data$yind)
     y
      data$yind
    1         1
    2        11
    3         1
    4         1
    

    Potresti riportare il risultato del comando str(data) per vedere come è organizzato il dataset?

    #4915
    Davide Massidda
    Davide Massidda
    Moderator

    Dal messaggio di errore si direbbe che l’oggetto data non sia un data frame, ma un vettore, di conseguenza non esisterà nessuna colonna “yind” del data frame “data”, semplicemente perché data non è un data frame :)

    #4916

    alessia perri
    Participant

    allora per quel che riguarda il comando str():

    > str(data)
    chr “C:\\Users\\Utente\\Desktop\\DATA.txt”

    non so se sia questo il risultato aspettato :D
    Per quanto concerne il fatto che non sia un data frame, potreste consigliarmi quali passaggi effettuare prima di eseguire il comando?

    #4917

    alessia perri
    Participant

    allora rivedendo il tutto io ho saltato il primo passaggio,non ho cioè eseguito:

    data <- data.frame(yind = c(14472,60,18753….), altra_var = rep(“a”, 36603))

    Ho provato ad eseguirlo sulle prime tre righe e non mi dà problemi in effetti.
    Con tale comando però, come posso inserire tutti i valori di yind? sono troppi affinché possa scriverli manualmente come nell’esempio

    #4918
    Davide Massidda
    Davide Massidda
    Moderator

    I dati che vorresti inserire in yind dove sono registrati?

    #4919

    alessia perri
    Participant

    Scusa non ho capito la domanda. Comunque yind è il nome di una colonna che si trova nel mio dataset già caricato in R

    #4920
    Davide Massidda
    Davide Massidda
    Moderator

    Beh, tu prima hai detto:

    Con tale comando però, come posso inserire tutti i valori di yind? sono troppi affinché possa scriverli manualmente come nell’esempio

    Quindi viene da chiedermi: dove si trovano attualmente questi dati? Perché dovresti digitarli a mano? Forse si trovano su un file esterno? In realtà no, perché dici che si trovano in un dataset già caricato in R.

    Insomma, inizio a non capire. Riepiloghiamo.

    Tu vorresti utilizzare questo codice per creare un data frame:
    data <- data.frame(yind = c(...dati...), altra_var = rep(“a”, 36603))
    dove …dati… è una sequenza di numeri.

    Poi dici che i dati che yind dovrà contenere li hai già in R. Dove? In un altro data frame? Quale?

    #4921

    alessia perri
    Participant

    Allora, intendevo che sono all’interno della cartella che ho già caricato e che, seguendo l’esempio su, non so come inserire nel comando del dataframe ciascuno dei 36603 valori numerici che la colonna contiene. Provo a spiegarmi meglio,non so come debba inserire i dati in:

    …..yind = c(…dati..)…

    Utilizzando le prime 3 righe ed inserendo nelle parentesi i primi 3 valori della colonna ho:

    > data <- data.frame(yind = c(14472,60,18753), altra_var = rep(“a”, 3))
    > data
    yind altra_var
    1 14472 a
    2 60 a
    3 18753 a

    Non so però come muovermi per inserire nel comando ciascuna riga della colonna di riferimento

    #4922
    Davide Massidda
    Davide Massidda
    Moderator

    Ok, se è così io un’idea ce l’ho. Però ho bisogno di capire dove stanno questi 36603 valori numerici che tu vorresti inserire. Si trovano in un file esterno localizzato dentro la cartella nella quale stai lavorando?

    #4923

    alessia perri
    Participant

    Il file appartiene alla stessa cartella su cui sto lavorando e devo usarlo come vettore risposta per la mia regressione

    #4924
    Davide Massidda
    Davide Massidda
    Moderator

    Bene, quindi i dati che vorresti inserire in yind sono registrati in un file esterno. Penso che tu lo possa importare con il comando scan, ma vorrei esserne sicuro prima di spiegarti come: potresti postare un piccolo estratto del file? Vorrei capire com’è organizzato.

    #4929

    alessia perri
    Participant

    PB030 yind AREA PB130 PB140 PB150 PB190 PB200 PE010 PE030
    101 14472 3 3 1970 2 3 3 2 1992
    102 60 3 4 1995 1 1 3 2 2015
    201 18753 1 4 1970 1 2 1 2 1986
    202 12783 1 1 1972 2 2 1 2 1988
    204 0 1 2 1997 2 1 3 1 2011
    401 29323 1 4 1955 1 2 1 2 1976
    402 -46 1 1 1956 2 2 1 2 1970
    501 39629 1 1 1967 1 2 3 2 1986
    601 17250 1 1 1962 1 2 1 2 1983
    602 14400 1 1 1974 2 2 1 2 1993
    604 0 1 1 1998 1 1 3 1 2012
    701 3179 2 3 1946 2 3 3 2
    801 19590 1 2 1975 2 1 3 2 2006
    1001 17445 1 1 1979 2 5 3 2 1999
    1201 12502 2 3 1953 1 2 1 2 2013
    1202 0 2 4 1955 2 2 1 2 1989
    1301 29928 2 3 1972 1 2 1 2 1991

    I microdati vengono dall’Istat e tutte le colonne hanno lo stesso numero di righe

    #4931
    Davide Massidda
    Davide Massidda
    Moderator

    Ok, allora hai semplicemente bisogno di importare i dati in un data frame, utilizzando il comando read.table. A quel punto avrai la tua variabile yind già bella che inserita in un data frame e non dovrai fare nient’altro.

    Quindi, mi pare di capire che il problema si riduca all’importazione di una tabella di dati in R. Per questo esistono non centinaia, direi migliaia di tutorial, perché è esattamente il punto di partenza con R…

    data <- read.table("nomefile.estensione", sep=" ")

    #4933

    alessia perri
    Participant

    La tabella in R è già stata importata in formato txt:

    > DATA = file.choose()
    > read.delim2(DATA, sep = “\t”, dec = “.”, header = TRUE, colClasses = NA, blank.lines.skip = FALSE)
    ylav yasfa ysaldo yind_old Ytax ydipL_old ydipL CSdi CSa CSda
    1 10800 0 70 14472 385 11029 11029 950 0 3773
    2 0 0 0 60 0 0 0 0 0 0
    3 16464 1200 1241 17733 1153 16565 17670 1869 0 7579
    > data <- na.omit(DATA)
    > y <- as.data.frame(data$yind)
    Error in data$yind : $ operator is invalid for atomic vectors

Viewing 15 posts - 1 through 15 (of 17 total)

You must be logged in to reply to this topic.