[英]Select a column by column-name, but a different name for each row of a matrix in R?
[英]Select a column by criteria *and* the column name in each row of an R dataframe?
如果我具有按地区和候选人分类的选举结果数据框,是否有一种简单的方法来找到R中每个地区的获胜者? 也就是说,对于每一行,同时选择最大值和该最大值的列名称?
District CandidateA CandidateB CandidateC
1 702 467 35
2 523 642 12
...
因此,我不仅要选择第1行中的702和第2行中的642,还要选择第1行中的“ CandidateA”和第2行中的“ CandidateB”。
我问这是一个学习中的问题,因为我知道我可以使用任何通用脚本语言(例如Perl或Ruby)来做到这一点。 也许R不是用于此的工具,但似乎可以。 谢谢。
d <- read.table(textConnection(
"District CandidateA CandidateB CandidateC
1 702 467 35
2 523 642 12"),
header=TRUE)
d2 <- d[,-1] ## drop district number
data.frame(winner=names(d2)[apply(d2,1,which.max)],
votes=apply(d2,1,max))
结果:
winner votes
1 CandidateA 702
2 CandidateB 642
您需要担心联系吗? 看到对which
和which.max
的帮助,他们对待纽带的方式有所不同...
如果不太混乱,可以尝试运行for
循环并使用cat
打印结果。 因此,如果您的data.frame
对象是x
:
for(i in 1:length(x$District)) {
row <- x[i,]
max_row <- max(row[2:length(row)])
winner_row <- names(x)[which(row==max_row)]
cat(winner_row, max_row, "\n")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.