Sono alle prese con le etichette delle variabili delle colonne data.frame. Dire che ho un frame di dati come questo (parte di molto più grande cornice di dati):R: Assegna etichette variabili delle colonne del frame di dati
data <- data.frame(age = c(21, 30, 25, 41, 29, 33), sex = factor(c(1, 2, 1, 2, 1, 2), labels = c("Female", "Male")))
Ho anche un vettore di nome con le etichette di variabile di questi dati:
var.labels <- c(age = "Age in Years", sex = "Sex of the participant")
Quello che voglio fare è assegnare le etichette variabili in var.labels
alle colonne nel riquadro dati data
utilizzando la funzione label
dal pacchetto Hmisc
. Posso fare uno per uno come questo e controllare il risultato in seguito:
> label(data[["age"]]) <- "Age in years"
> label(data[["sex"]]) <- "Sex of the participant"
> label(data)
age sex
"Age in years" "Sex of the participant"
Le etichette delle variabili sono assegnati come attributi delle colonne:
> attr(data[["age"]], "label")
[1] "Age in years"
> attr(data[["sex"]], "label")
[1] "Sex of the participant"
meraviglioso. Tuttavia, con un frame di dati più grande, ad esempio 100 o più colonne, questo non sarà molto comodo o efficiente. Un'altra cosa che potrei facilmente fare è assegnarli direttamente come attributi:
> attr(data, "variable.labels") <- var.labels
Non aiuta. Le etichette delle variabili non sono assegnati alle colonne:
> label(data)
age sex
"" ""
Invece, sono assegnati come un attributo del telaio dati stessi (vedi l'ultimo componente della lista):
> attributes(data)
$names
[1] "age" "sex"
$row.names
[1] 1 2 3 4 5 6
$class
[1] "data.frame"
$variable.labels
age sex
"Age in Years" "Sex of the participant"
E questo è non quello che voglio Ho bisogno delle etichette delle variabili come attributi delle colonne. Ho provato a scrivere la seguente funzione (e molti altri):
set.var.labels <- function(dataframe, label.vector){
column.names <- names(dataframe)
dataframe <- mapply(label, column.names, label.vector)
return(dataframe)
}
e poi eseguirlo:
> set.var.labels(data, var.labels)
non ha aiutato. Restituisce i valori del vettore var.labels
, ma non assegna le etichette delle variabili. Se provo ad assegnarlo a un nuovo oggetto, esso contiene solo i valori delle etichette delle variabili come un vettore.
@ eipi10: Thank you very much! Funziona! Questo è ESATTAMENTE ciò di cui avevo bisogno. Ho problemi a capire l'indicizzazione quando utilizzo la famiglia di funzioni 'apply'. C'è qualche guida che potrei leggere o è una questione di esperienza? – panman
Per brevi tutorial su 'lapply', [this] (http://rollingyours.wordpress.com/category/r-programming-apply-lapply-tapply/) e [this] (https://nsaunders.wordpress.com)/2010/08/20/a-brief-introduction-to-apply-in-r /) potrebbe essere utile. Ho anche aggiunto qualche altra spiegazione alla mia risposta. – eipi10