我有一个数据框,如下所示:
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),但这段数据应该足够了。
我需要的是以“你的老师”的值的降序来识别向量totalq3到totalq53的某种方法。然后我标记5个具有“Your Teachers”最高值的向量,并将这5个输出到xtable。最后,必须重复该过程以识别具有“您的教师”的最小值的5个向量。
这里的诀窍是什么?任何和所有提示将不胜感激。
阿尼
答案 0 :(得分: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]])
答案 1 :(得分:0)
使用名为'dat'的数据框,这将是第二行'dat'顺序的列名。
names(dat)[-(1:3)][order( dat[2, -(1:3)]) ]
因此,最高的五个受访者值将是:
tail( names(dat)[-(1:3)][order( dat[2, -(1:3)]) ], 5)
列名称包含五个最低值:
head( names(dat)[-(1:3)][order( dat[2, -(1:3)]) ], 5)
要获得通过xtable的简化数据集,只需使用“head or tails”:
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)