gpt4 book ai didi

r - 查找完全相关/冗余的数字和字符列

转载 作者:行者123 更新时间:2023-12-03 05:31:48 25 4
gpt4 key购买 nike

我有一个包含数百列的数据集。它包含邮件列表数据,并且其中几个列似乎彼此完全相同,但形式不同。

例如:

rowNum    StateCode       StateName      StateAbbreviation
1 01 UTAH UT
2 01 UTAH UT
3 03 TEXAS TX
4 03 TEXAS TX
5 03 TEXAS TX
6 44 OHIO OH
7 44 OHIO OH
8 44 OHIO OH
... ... ... ...

我想删除重叠的数据,并尽可能保留数字列,这样只有一列包含相同的信息。因此,上面的例子将变成:

rowNum    StateCode
1 01
2 01
3 03
4 03
5 03
6 44
7 44
8 44
... ...

我尝试过使用 cor() 但这仅适用于数字变量。我尝试过 caret::nearZeroVar() 但这仅适用于列本身。

有人对查找涉及非数字数据的完全相关列有任何建议吗?

谢谢。

最佳答案

这是一个有趣且快速的解决方案。它首先将 data.frame 转换为适当结构的整数类矩阵,然后使用 cor() 来识别冗余列。

## Read in the data
df <- read.table(text="rowNum StateCode StateName StateAbbreviation
1 01 UTAH UT
2 01 UTAH UT
3 03 TEXAS TX
4 03 TEXAS TX
5 03 TEXAS TX
6 44 OHIO OH
7 44 OHIO OH
8 44 OHIO OH", header=TRUE)

## Convert data.frame to a matrix with a convenient structure
## (have a look at m to see where this is headed)
l <- lapply(df, function(X) as.numeric(factor(X, levels=unique(X))))
m <- as.matrix(data.frame(l))

## Identify pairs of perfectly correlated columns
M <- (cor(m,m)==1)
M[lower.tri(M, diag=TRUE)] <- FALSE

## Extract the names of the redundant columns
colnames(M)[colSums(M)>0]
[1] "StateName" "StateAbbreviation"

关于r - 查找完全相关/冗余的数字和字符列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12272019/

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