R 获取与多维意外事件中的最大值关联的级别 table
R get the levels associated with the maximum value in a multidimensional contingency table
使用像
这样的简单向量
x <- sample(letters[1:3], size=20, replace=T)
我会用
之类的东西提取最常见的字母
y <- table(x)
print(names(y)[y==max(y)])
"b"
但是,在多维数据帧上使用相同的技术不起作用:
set.seed(5)
x <- data.frame(c1=sample(letters[1:3], size=30, replace=T),
c2=sample(letters[4:5], size=30, replace=T),
c3=sample(letters[6:10], size=30, replace=T))
y <- table(x)
print(names(y)[y==max(y)])
NULL
如何提取在意外事件 table 中具有最高值的 c1、c2 和 c3 的级别?
我知道我可以将 table 转换为数据框并找到 Freq 列最高的行,但是考虑到我数据集中的维数和级别,转换为数据框不会适合我的 RAM 内存。
编辑: 所以我在第二种情况下的预期输出是 c, d, j
,如:
z <- data.frame(y)
z[z$Freq==max(z$Freq), 1:3]
c1 c2 c3
27 c d j
但请注意,由于 RAM 问题,我无法对我的数据使用 data.frame
调用。
您可以将 which
与 arr.ind = TRUE
一起使用:
mapply("[",
dimnames(y),
as.data.frame(which(y == max(y), arr.ind = TRUE)))
# c1 c2 c3
#"c" "d" "j"
mapply("[",
dimnames(y),
as.data.frame(which(y == min(y), arr.ind = TRUE)))
# c1 c2 c3
# [1,] "a" "d" "f"
# [2,] "b" "d" "g"
# [3,] "c" "d" "g"
# [4,] "b" "e" "g"
# [5,] "a" "d" "h"
# [6,] "b" "d" "h"
# [7,] "c" "d" "h"
# [8,] "c" "e" "h"
# [9,] "a" "e" "i"
#[10,] "b" "e" "i"
#[11,] "c" "e" "i"
使用像
这样的简单向量x <- sample(letters[1:3], size=20, replace=T)
我会用
之类的东西提取最常见的字母y <- table(x)
print(names(y)[y==max(y)])
"b"
但是,在多维数据帧上使用相同的技术不起作用:
set.seed(5)
x <- data.frame(c1=sample(letters[1:3], size=30, replace=T),
c2=sample(letters[4:5], size=30, replace=T),
c3=sample(letters[6:10], size=30, replace=T))
y <- table(x)
print(names(y)[y==max(y)])
NULL
如何提取在意外事件 table 中具有最高值的 c1、c2 和 c3 的级别?
我知道我可以将 table 转换为数据框并找到 Freq 列最高的行,但是考虑到我数据集中的维数和级别,转换为数据框不会适合我的 RAM 内存。
编辑: 所以我在第二种情况下的预期输出是 c, d, j
,如:
z <- data.frame(y)
z[z$Freq==max(z$Freq), 1:3]
c1 c2 c3
27 c d j
但请注意,由于 RAM 问题,我无法对我的数据使用 data.frame
调用。
您可以将 which
与 arr.ind = TRUE
一起使用:
mapply("[",
dimnames(y),
as.data.frame(which(y == max(y), arr.ind = TRUE)))
# c1 c2 c3
#"c" "d" "j"
mapply("[",
dimnames(y),
as.data.frame(which(y == min(y), arr.ind = TRUE)))
# c1 c2 c3
# [1,] "a" "d" "f"
# [2,] "b" "d" "g"
# [3,] "c" "d" "g"
# [4,] "b" "e" "g"
# [5,] "a" "d" "h"
# [6,] "b" "d" "h"
# [7,] "c" "d" "h"
# [8,] "c" "e" "h"
# [9,] "a" "e" "i"
#[10,] "b" "e" "i"
#[11,] "c" "e" "i"