2014-12-07 63 views
1

如何確定向量中案例的數值位置?確定R中案例列表(變量)中的位置

我有一個變量如Var多個案例:

Case_1 <- 22 
Case_2 <- 33 
Case_3 <- 155 
Case_4 <- 321 
Var <- cbind(c(Case_1,Case_2,Case_3, Case_4)) 
names(Var) <- c("Case_1","Case_2","Case_3", "Case_4") 
Var <- sort(Var, decreasing = TRUE) 

我想知道的情況下,在這個列表(位置在這種情況下 - Case 4是位置1Case_3是位置2等我該怎麼辦呢R中

+0

請完成示例以使其具有可重現性 – 2014-12-07 23:48:42

+0

我提交了一個編輯以使其具有可重現性;歡呼聲 – 2014-12-08 00:00:51

回答

1

這裏有2種方式:

Case_1 <- 22 
Case_2 <- 33 
Case_3 <- 155 
Case_4 <- 321 
Var <- cbind(c(Case_1,Case_2,Case_3, Case_4)) 
names(Var) <- c("Case_1","Case_2","Case_3", "Case_4") 
Var <- sort(Var, decreasing = TRUE) 

# By Value 
n <- which(Var == 321) 
cat("The position with a value of 321 is", n) 

與321的值的位置爲1

# By Name 
n <- which(names(Var) == "Case_1") 
cat("The position with of Case_1 is", n) 

用的位置Case_1是4

+1

感謝您的幫助!這種方法爲我解決,歡呼! – Zlo 2014-12-08 01:02:56

+0

@Zlo酷!很高興它的工作 – 2014-12-08 14:32:49

1

可以使用match()功能:

myvec <- letters 

> myvec 
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" 

> match('e',myvec) 
[1] 5 

你可以用這種方式得到索引。

至於你例如:

Var <- read.table(header=F, text= "Case_1 22 
Case_2 33 
Case_3 155 
Case_4 321") 

Var <- Var[order(Var$V1, decreasing=T), ] #sort it decreasing 

> match('Case_4',Var$V1) 
[1] 1 
+0

'match('qatarflights',sort(di,decrease = T)) [1] NA' 由於某種原因,我得到了NA而不是位置。 – Zlo 2014-12-07 23:17:04

+0

我認爲這可能是一個排序問題。首先嚐試對數據框進行排序,然後在開始時使用匹配來查看它的工作原理。另外,確保'qatarflights'在你的data.frame中也是小寫字母。 R區分大小寫。 – LyzandeR 2014-12-07 23:26:16

+0

謝謝,我會試試。 – Zlo 2014-12-07 23:56:00