2013-10-06 14 views
10

Mam następujący ramkę danych:Jak zmienić etykiety czynników w ciąg w ramce danych

name1 name2 
     A  B 
     B  D 
     C  C 
     D  A 

kolumnach „NAME1” i „name2” są traktowane jako czynniki, a więc A, B, C, D są traktowane jako poziomy. Jednak chcę jakoś przekonwertować tę ramkę danych, tak że stają się

name1 name2 
     "A" "B" 
     "B" "D" 
     "C" "C" 
     "D" "A" 

Innymi słowy, przekształcić go w taki sposób, że A, B, C i D są traktowane jako ciąg.

Jak mogę to zrobić?

+0

W jaki sposób tworzysz ramkę danych? Możesz to również zrobić podczas importowania, jeśli czytasz w pliku rozdzielanym. – beroe

Odpowiedz

16

szukasz as.character, który należy zastosować do każdej kolumny data.frame

Zakładając X to data.frame
Jeśli fctr.cols są nazwiska swoich kolumnach czynników, wówczas można użyć:

X[, fctr.cols] <- sapply(X[, fctr.cols], as.character) 

można odebrać kolumny współczynnika stosując is.factor:

fctr.cols <- sapply(X, is.factor) 
1

To może być trochę prostsze niż powyższa odpowiedź.

#where your dataframe = df 
df.name1 <- as.character (df.name1) 
df.name2 <- as.character (df.name2) 

Muszę robić takie rzeczy przez cały czas w pracy, ponieważ dane są tak niechlujne. Byłem w stanie to zrobić przy imporcie ze StringsAsFactors = FALSE, ale w najnowszej wersji r dostaję błąd na read.csv. Najlepiej jakoś to odkryję ... W międzyczasie robię to jako szybką i skuteczną metodę. Trwa stara zmienna, foo, która jest typem czynnika, i konwertuje ją do nowej zmiennej, fooChar, która jest typem znaku. Zwykle robię to na miejscu, nazywając nową zmienną taką samą jak poprzednia, ale możesz chcieć grać z nią, zanim zaufasz jej zastąpieniu wartości.

#Convert from Factor to Char 
#Data frame named data 
#Old Variable named foo, factor type 
#New Variable named fooChar, character type 

data$fooChar <-as.character(data$foo) 

#confirm the data looks the same: 
table (data$fooChar) 

#confirm structure of new variable 
str(data) 
Powiązane problemy