繁体   English   中英

通过条件选择列*和* 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

您需要担心联系吗? 看到对whichwhich.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM