2017-07-15 19 views
-3

我試圖將data.frame轉換爲table沒有包。基本上我以cookbook作爲參考,並從數據幀中嘗試,既有名也有未命名的向量。數據集是kaggle的stackoverflow調查。表()函數不能正確地轉換數據幀

moreThan1000data.frame商店國家的超過1000個計算器的用戶,並通過數列進行排序,如下圖所示:

moreThan1000 <- subset(users, users$Number >1000) 
moreThan1000 <- moreThan1000[order(moreThan1000$Number),] 

enter image description here

當我嘗試將其轉換爲一個table

tbl <- table(moreThan1000) 
tbl <- table(moreThan1000$Country, moreThan1000$Number) 
tbl <- table(moreThan1000$Country, moreThan1000$Number, dnn = c("Country","Number")) 

每次嘗試後,我的轉換如下所示: enter image description here

爲什麼moreThan1000 data.frame不只發送相關國家,但所有國家到table?在我看來,轉換看起來像是matrix

+2

爲什麼要轉換爲表格對象?你的data.frame已經包含製表數據。 – Roland

+0

,因爲它不適用於'barplot'或'pie' –

+1

@MuratSEKERMCT;我不認爲這是正確的。你真的只想要這個'barplot(dat $ number,names.arg = dat $ country)' – user20650

回答

1

我認爲這是因爲各國並不相互關聯。給每個國家對應一個號碼,到另一個國家將對應一個不相關的號碼。因此,最好的反映方法是原始data.frame,而不是每行只有一個1的表(除非兩個國家/地區的計算機用戶數相同)。我沒有下載你正在使用的數據集,但是看看假數據集發生了什麼,按照數字順序排列,就像moreThan1000一樣。

dat <- data.frame(A = letters[1:5], X = 21:25) 
table(dat$A, dat$X) 

    21 22 23 24 25 
    a 1 0 0 0 0 
    b 0 1 0 0 0 
    c 0 0 1 0 0 
    d 0 0 0 1 0 
    e 0 0 0 0 1 

爲什麼你會期望有什麼不同於你的數據集?

0

函數「table」用於製表符您的數據。

因此,它將計算每個值發生的次數(在「數字」列!)。在你的情況下,每個數字只出現一次,所以在這裏不使用這個函數。它工作正常,但不是你需要的。

您的數據已經是製表符,不需要重新計算頻率。

你可以檢查是否有對象轉換功能,我想你正在尋找一個功能as.table而不是table