2015-04-03 165 views
-1

我已經向R中輸入了一些數據,其中有兩個變量。其中一個變量的所有數據都是1或2,我試圖將其分類。將因子分解爲R

當我嘗試data.f<-factor(data)我得到錯誤信息

「錯誤sort.list(Y): 'X' 必須是原子的 'sort.list'

你叫在列表中「排序」?我不知道這是什麼意思。

有人可以建議如何分解我的數據嗎?

+0

如果您沒有提供可重現的數據示例,沒有人能夠爲您提供幫助。花時間做一個,這將是值得的。說明:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – rmuc8 2015-04-03 14:10:21

+0

@ r.496考慮接受答案,如果它解決了你的問題。 – fotNelton 2015-04-04 11:50:22

回答

2

根據您的相當簡短的描述和給出的錯誤信息,我假設您的問題是您在整個數據框data上調用factor

請注意,因子始終對應於單個變量。至於你說你在你的數據幀中的兩個變量,讓我們嘗試下面的例子:

> myDataFrame <- data.frame(x = c(1,2,2,2,1,2,2,1), y = 1:8) 
> factor(myDataFrame) 
Error in sort.list(y) : 'x' must be atomic for 'sort.list' 
Have you called 'sort' on a list? 

如果要計算一個因素第一個變量,然後執行,而不是執行以下操作:

> myFactor <- factor(myDataFrame$x)  # or factor(myDataFrame[,1]) 

然後,您可以使用myFactor排序數據幀像這樣:

> myDataFrame[order(myFactor),] 
    x y 
1 1 1 
5 1 5 
8 1 8 
2 2 2 
3 2 3 
4 2 4 
6 2 6 
7 2 7 

最後,請注意,其實沒有必要在這裏的一個因素。由於您的變量已經是數字,因此您可以直接使用它,如

> myDataFrame[order(myDataFrame$x),] 

這將產生完全相同的結果。