我遇到了一个问题。
我有数据集
v1 v2 v3 v4
VL M H M
M H L L
M M M H
VH H H VL
列名为v1 v2 v3,每个行值将随五个参数而变化。 M-medium,L-Low,VL-very low,VH-very high,H-HIGH。
我想要更高的列和行值。这意味着如果第一行中M计数更高,则第一行高值为M.如果行具有两个更高的值,则将两者作为更高的值。与列相同的方式。如果所有都有相同的计数,请选择All as higher。
输出:
排更高的值
A B
1 M
2 L
3 M
4 H
cloumn更高的价值
A B
V1 M
V2 M,H
V3 H
V4 M,L,H,VL
答案 0 :(得分:2)
这看起来有效:
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)