我陷入一个问题。
我有数据集
v1 v2 v3 v4
VL M H M
M H L L
M M M H
VH H H VL
列名是v1 v2 v3,每个行的值将随着五个参数而变化。M-中,L-低,VL-非常低,VH-非常高,H-高。
我想要更高的列和行值。这意味着如果第一行中的M计数更高,则第一行的高值为M.如果行具有两个更高的值,则将两者都视为更高的值。与列相同。如果所有计数都相同,则选择全部为更高。
输出:
行较高的值
A B
1 M
2 L
3 M
4 H
最高价值
A B
V1 M
V2 M,H
V3 H
V4 M,L,H,VL
这看起来是有效的:
ff = function(x) {
tab = table(x)
paste0(names(tab)[which(tab == max(tab))], collapse = ", ")
}
apply(DF, 2, ff) #for columns
# v1 v2 v3 v4
# "M" "H, M" "H" "H, L, M, VL"
apply(DF, 1, ff) #for rows
#[1] "M" "L" "M" "H"
哪里DF
:
DF = read.table(text = 'v1 v2 v3 v4
VL M H M
M H L L
M M M H
VH H H VL', header = T, stringsAsFactors = F)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句