2015-10-07 67 views
0

我有調查,人們通過他們的流行度來分類動物。例如: :R:加權總結

"first","second","third" 
"dog","cat","rabbit" 
"cat","rabbit","dog" 
"dog","cat","rabbit" 
"dog","cat","rabbit" 

我想要圖形,它顯示順序。 所以動物在第一列中得到3重量,在第二權重2和第三權重1

當我做:

data<-read.csv("animals.csv", header=T) 

f = summary(data$first) 
s = summary(data$second) 
t = summary(data$third) 

˚F是陣列:

dog  cat 
    3  1 

s是與陣列:

cat  rabbit 
    3   1 

牛逼是陣列:

dog  rabbit 
    1   3 

而很明顯我不能這樣做:

graph = 3*f + 2*s + t 

因爲他們不具有相同的列。 存在一些功能如何做到這一點。如何對這三列進行加權組合?

我到底需要:

dog  cat  rabbit 
10  9   5 

我在爲r的初學者,所以,謝謝幫忙。

+0

請顯示您期望作爲示例輸出的加權組合。 –

+1

你的意思是你最終需要10只狗,9只貓和5只兔子嗎? –

回答

3

要獲得的加權數,你可以這樣做:

table(c(rep(data$first, 3), rep(data$second, 2), data$third)) 

# cat dog rabbit 
# 9  10  5 

數據

data <- structure(list(first = c("dog", "cat", "dog", "dog"), second = c("cat", 
"rabbit", "cat", "cat"), third = c("rabbit", "dog", "rabbit", 
"rabbit")), .Names = c("first", "second", "third"), class = "data.frame", row.names = c(NA, 
-4L)) 

注:如果數據與字符的因素進口的,你可以做:

table(c(rep(as.character(data$first), 3), rep(as.character(data$second), 2), as.character(data$third))) 
+0

如果這些值是因素,這將不會給出好的結果。 – user295691

+0

@ user295691,也許但是它們可以作爲字符導入,或者只是在'as.character'中包裝,如果不是的話 – Cath

+0

非常感謝。 As.character有正確的結果 – Zerig