2012-06-03 38 views
0

我有一個數據幀中的特定的行5個最高和5最低值確定載體:與在DF

group  respondent nteachers totalq3 totalq4 totalq5 totalq6 totalq7 
1  2   You   2  5  4  4  5  5 
2  2 Your Teachers   2  10  8  9  10  10 
119 1001 All Principals  NA  NA  NA  NA  NA  NA 
120 1002 All Teachers  NA  NA  NA  NA  NA  NA 

有超越totalq7(通過totalq53)額外的載體,但此片段的數據應該足夠了。

我需要的是通過totalq53以「Your Teachers」值的降序來確定向量totalq3的某種方式。然後我標記具有最高值的5個向量「Your Teachers」,並將這5個向量輸出到xtable。最後,必須重複該過程以識別具有「您的教師」的最小值的5個向量。

這裏有什麼竅門?任何和所有的提示將不勝感激。

阿尼

回答

0

隨着一個名爲「逸」據幀,這將是在「逸」第二排的順序列名。

names(dat)[-(1:3)][order(dat[2, -(1:3)]) ] 

所以高5個答辯值將是:

tail(names(dat)[-(1:3)][order(dat[2, -(1:3)]) ], 5) 

,列名與五個最低值:

head(names(dat)[-(1:3)][order(dat[2, -(1:3)]) ], 5) 

要得到降低數據集通道xtable ,只需使用「正面或反面」:

dat[ , head(names(dat)[-(1:3)][order(dat[2, -(1:3)]) ], 5) ] 

下面是測試集:

dat <- read.table(text=" group  respondent nteachers totalq3 totalq4 totalq5 totalq6 totalq7 
1  2   'You'   2  5  4  4  5  5 
2  2 'Your Teachers'   2  10  8  9  10  10 
119 1001 'All Principals'  NA  NA  NA  NA  NA  NA 
120 1002 'All Teachers'  NA  NA  NA  NA  NA  NA", header=TRUE) 
1
inc <- order(data[data$respondent == 'Your Teachers',-(1:3)]) 
dec <- order(data[data$respondent == 'Your Teachers',-(1:3)], decreasing = T) 
xtable(data[,3+inc[1:5]]) 
xtable(data[,3+dec[1:5]]) 
+0

更改爲2〜3,忘nteachers – Julius

+0

由於達誠和朱利;這有助於我學到了很多東西。非常感激。 – user1433981

+0

在這種情況下,您可能想要接受其中一個答案 – Julius