gpt4 book ai didi

R计算一行而不是列的模式

转载 作者:行者123 更新时间:2023-12-02 07:26:28 24 4
gpt4 key购买 nike

通常人们想计算每个问题的众数,但在我的例子中,我需要计算所有问题的每个受访者的众数。

这是我的数据的样子:

> head(TiposMotivA)
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21
1 5 4 4 4 6 6 7 6 4 6 6 6 4 4 4 4 6 7 4 4 6
2 5 4 4 5 5 5 5 5 5 5 7 5 4 3 1 6 6 5 6 7 7
3 4 5 4 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5
4 5 5 7 7 4 6 6 6 7 7 6 7 7 6 6 7 4 7 6 6 7
5 6 1 7 6 7 7 7 7 7 7 6 7 2 2 3 6 3 7 7 7 7
6 4 4 3 3 4 5 4 3 4 7 6 6 4 4 6 4 5 7 6 6 7

这个解决方案是我迄今为止找到的最好的解决方案:

apply(TiposMotivA, 1, Compose(table,
function(i) i==max(i),
which,
names,
function(i) paste0(i, collapse='/')
)
)

它由 Matthew Lundberg 提供:Select majority number of each row in matrix using r

它产生了这个:

 [1] "4"   "5"   "4"   "7"   "7"   "4"   "7"   "6"   "7"   "7"   "7"   "7"   "7" 
[14] "5/6" "7" "6" "7" "6" "7" "7" "7" "7" "7" "7" "7" "7"
[27] "7" "7" "7" "5" "2" "7" "7" "7" "7" "7" "6" "6" "7"
[40] "4/7" "3" "4" "7" "5/7" "6" "7" "7" "6" "7" "6" "7" "7"
[53] "7" "6" "7" "7" "5/7" "7" "7" "7" "7" "7"
>

我的问题对某些人来说似乎很基本,但让我抓狂。我每行只需要一个模式,所以当有两个模式时,我只需要第一个。我曾尝试使用 split() 但没有成功。

所以,我需要的是获取每一行的模式,如上所述,但是当有两行时只有第一种模式。

像这样:

 [1] "4"   "5"   "4"   "7"   "7"   "4"   "7"   "6"   "7"   "7"   "7"   "7"   "7" 
[14] "5" "7" "6" "7" "6" "7" "7" "7" "7" "7" "7" "7" "7"
[27] "7" "7" "7" "5" "2" "7" "7" "7" "7" "7" "6" "6" "7"
[40] "4" "3" "4" "7" "5" "6" "7" "7" "6" "7" "6" "7" "7"
[53] "7" "6" "7" "7" "5" "7" "7" "7" "7" "7"
>

我们将不胜感激任何帮助。

最佳答案

which.max 可用于查找第一个最大值的位置:

apply(TiposMotivA, 1, function(x) { tab <- table(x); names(tab)[which.max(tab)] } )

给予:

  1   2   3   4   5   6 
"4" "5" "4" "7" "7" "4"

不需要包。

关于R计算一行而不是列的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28200108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com