2014-12-28 31 views
12

z str(data) otrzymuję head poziomów (1-2 wartości)lista wszystkich poziomach Czynnikiem data.frame

fac1: Factor w/ 2 levels ... : 
fac2: Factor w/ 5 levels ... : 
fac3: Factor w/ 20 levels ... : 
val: num ... 

z dplyr::glimpse(data) uzyskać więcej wartości, ale żadne informacje o ilości/wartości współczynnika poziomy. Czy istnieje automatyczny sposób na uzyskanie wszystkich informacji o poziomie wszystkich zmiennych VAR w pliku data.frame? Krótka forma z więcej informacji na

levels(data$fac1) 
levels(data$fac2) 
levels(data$fac3) 

lub dokładniej elegancka wersja czegoś jak

for (n in names(data)) 
    if (is.factor(data[[n]])) { 
    print(n) 
    print(levels(data[[n]])) 
    } 

thx Christof

Odpowiedz

9

Oto kilka opcji. Mamy pętla przez „dane” z sapply i uzyskać levels każdej kolumny (przy założeniu, że wszystkie kolumny są factor klasa)

sapply(data, levels) 

Lub jeśli musimy rury (%>%) to można to zrobić jak

library(dplyr) 
data %>% 
    sapply(levels) 

Albo inna opcja jest summarise_each z dplyr gdzie możemy określić levels obrębie funs.

data %>% 
     summarise_each(funs(list(levels(.)))) 
+3

W jaki sposób możemy uzyskać długość wszystkich tych poziomach – BigDataScientist

2

Prostszą metodą jest użycie pakietu sqldf i użycie instrukcji select distinct. Ułatwia to automatyczne uzyskiwanie nazw poziomów czynników, a następnie określanie poziomów dla innych kolumn/zmiennych.

kod Generic fragment brzmi:

library(sqldf) 
    array_name = sqldf("select DISTINCT *colname1* as '*column_title*' from *table_name*") 

Przykładowy kod za pomocą tęczówki zestaw danych:

df1 = iris 
factor1 <- sqldf("select distinct Species as 'flower_type' from df1") 
factor1 ## to print the names of factors 

wyjściowa:

flower_type 
1  setosa 
2 versicolor 
3 virginica 
+0

jeśli wcięcie każdej linii kodu o 4 spacje spowoduje jej prawidłowe sformatowanie. –

Powiązane problemy