Ho un set di dati con variabili numeriche e categoriali con ~ 200.000 righe, ma molte variabili sono costanti (sia numeriche che cat). Sto cercando di creare un nuovo set di dati in cui le variabili length(unique(data.frame$factor))<=1
vengono eliminate. DatiCome eliminare colonne dal frame di dati con meno di 2 livelli unici in R
esempio dato e tentativi finora:
Temp=c(26:30)
Feels=c("cold","cold","cold","hot","hot")
Time=c("night","night","night","night","night")
Year=c(2015,2015,2015,2015,2015)
DF=data.frame(Temp,Feels,Time,Year)
penserei un ciclo avrebbe funzionato, ma qualcosa non funziona nel mio 2 di seguito i tentativi. Ho provato:
for (i in unique(colnames(DF))){
Reduced_DF <- DF[,(length(unique(DF$i)))>1]
}
Ma ho davvero bisogno di un vettore dei colnames cui lunghezza (unici (DF $ colonne))> 1, così ho provato il seguito, invece, senza alcun risultato.
for (i in unique(DF)){
if (length(unique(DF$i)) >1)
{keepvars <- c(DF$i)}
Reduced_DF <- DF[keepvars]
}
Qualcuno là fuori hanno esperienza con questo tipo di sottoinsiemi/caduta di colonne con meno di un certo livello di conteggio?
Inoltre, alcuni motivi per cui il vostro per i cicli non si lavora: 1) Si sta creando una nuova variabile 'Reduced_DF' in ogni iterazione invece di cambiare l'originale, il che significa che si dimentica dopo ogni ciclo, 2) Non puoi accedere a una colonna con 'DF $ i', avresti bisogno di' DF [[i]] ', 3) l'espressione' DF [ , (length (unique (DF $ i)))> 1] 'sta provando a subset da tutte le colonne, non decidendo se mantenere' i'. –