gpt4 book ai didi

r - 识别数据框中的重复列

转载 作者:行者123 更新时间:2023-12-03 13:42:56 25 4
gpt4 key购买 nike

我是 R 新手,正在尝试从较大的数据帧(50K 行,215 列)中删除重复的列。该框架混合了离散连续变量和分类变量。

我的方法是为框架中的每一列生成一个表到一个列表中,然后使用 duplicated()在列表中查找重复行的函数,如下所示:

age=18:29
height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5)
gender=c("M","F","M","M","F","F","M","M","F","M","F","M")
testframe = data.frame(age=age,height=height,height2=height,gender=gender,gender2=gender)

tables=apply(testframe,2,table)
dups=which(duplicated(tables))
testframe <- subset(testframe, select = -c(dups))

这不是很有效,特别是对于大的连续变量。但是,我已经走了这条路,因为我无法使用摘要获得相同的结果(注意,以下假设原始 testframe 包含重复项):
summaries=apply(testframe,2,summary)
dups=which(duplicated(summaries))
testframe <- subset(testframe, select = -c(dups))

如果您运行该代码,您将看到它只会删除找到的第一个重复项。我想这是因为我做错了什么。任何人都可以指出我哪里出错了,或者更好的是,指出从数据框中删除重复列的更好方法的方向吗?

最佳答案

你可以用 lapply :

testframe[!duplicated(lapply(testframe, summary))]
summary在忽略顺序的同时总结分布。

不是 100%,但如果数据很大,我会使用摘要:
library(digest)
testframe[!duplicated(lapply(testframe, digest))]

关于r - 识别数据框中的重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818125/

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