2013-10-06 25 views
10

我有以下的數據幀:如何改變因子標記引入串中的數據幀

name1 name2 
     A  B 
     B  D 
     C  C 
     D  A 

列「NAME1」和「NAME2」被視爲因素,因此,A,B,C,和D被視爲等級。但是我想以某種方式轉換該數據幀,使得其成爲

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

換句話說,將其轉換在該A,B,C,和d被視爲串的方法。

我該怎麼做?

+0

您是如何創建數據框的?如果您正在讀取分隔文件,您也可以在導入過程中執行此操作。 – beroe

回答

16

你要找as.character,您需要申請的data.frame

假設X每一列是你data.frame
如果fctr.cols是你的因素列的名稱,那麼你可以使用:

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

可以使用is.factor領取因子列:

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

這可能比上面的答案稍簡單一些。

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

我需要在工作中一直這樣做,因爲數據太混亂了。我已經能夠使用StringsAsFactors = FALSE進行導入,但是在最新版本的r中,我在read.csv中收到錯誤。理想情況下,我會很快弄清楚......與此同時,我一直在做這個快速有效的方法。 它將舊變量foo作爲因子類型,並將其轉換爲新變量fooChar,它是字符類型。我通常通過將新變量命名爲舊變量來進行原位操作,但您可能希望在用它來替代值之前先使用它。

#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)