R 创建显示矩阵中第n个放置元素的新变量(按大小写)

R 创建显示矩阵中第n个放置元素的新变量(按大小写),r,matrix,max,element,R,Matrix,Max,Element,首先,我真的很抱歉这个(包括标题)的笨拙-我是R的新手。我在SPSS上训练过,但从现在开始我强迫自己只使用R 我有一个数据框,按党派划分,显示一年内每个地区的选举结果。看起来是这样的: winner = function(x, labs){ most_votes = max(x) most_idx = which(x == most_votes) return(labs[most_idx]) } labs = names(df1970results)[6:11] mos

首先,我真的很抱歉这个(包括标题)的笨拙-我是R的新手。我在SPSS上训练过,但从现在开始我强迫自己只使用R

我有一个数据框,按党派划分,显示一年内每个地区的选举结果。看起来是这样的:

winner = function(x, labs){
    most_votes = max(x)
    most_idx = which(x == most_votes)
    return(labs[most_idx])
}

labs = names(df1970results)[6:11]
most_votes = apply(df1970results[,6:11], 1, winner, labs = labs)
df1970results = as.data.frame(cbind(df1970results, most_votes))

我使用max()函数创建了一个新变量,用于显示每个区域中的获胜方(我认为这也很笨拙),如下所示:

winner = function(x, labs){
    most_votes = max(x)
    most_idx = which(x == most_votes)
    return(labs[most_idx])
}

labs = names(df1970results)[6:11]
most_votes = apply(df1970results[,6:11], 1, winner, labs = labs)
df1970results = as.data.frame(cbind(df1970results, most_votes))
我需要另一个变量来告诉我每个领域的第二方,但我找不到合适的帖子来告诉我如何做。要么是这样,要么是我没有完全理解我读过的内容,所以我能够把它转移到我的问题上。上面代码的输出是max变量的标签(因此元素在新变量中填充了CON、LAB、LIB…)-如果需要的话,我不介意对这些元素进行数字编码(so 1=CON、2=LAB…)


有谁能告诉我一个简单的方法吗?我相信一定有一个简单的,新的证明方法。我很沮丧,我想不出来。你可以这样做

library(data.table) #just for the fread
df1970results <- fread('http://electoralcalculus.co.uk/electdata_1970.txt')
labs = names(df1970results)[6:11]

most_votes <- as.data.frame(t(apply(df1970results[,6:11],1,function(x) labs[order(-x)])))

head(most_votes)
   V1  V2  V3  V4  V5  V6
1 CON LAB LIB NAT MIN OTH
2 LAB CON LIB NAT MIN OTH
3 LAB CON LIB OTH NAT MIN
4 CON LAB LIB NAT MIN OTH
5 CON LAB LIB NAT MIN OTH
6 CON LAB LIB NAT MIN OTH 
library(data.table)#仅针对fread

DF1970结果谢谢你,但我认为它不起作用。没有错误代码,但我看不到数据的任何重新组织。有没有更好的方法与您共享数据?事实上,我是这样加载的:library(data.table)DF1970结果哦,它确实做了一些事情(电脑速度慢),但不幸的是,它并不是我们想要的。不过,我真的很感谢你的回答,再次感谢。你可能需要将其转换为.data.frame(t)(应用(…
Yes)-找到数据,转换解决方案有效。答案在上面进行了修改。如果你愿意,你可以将其转换为原始数据。