我是R新手,正試圖從大型數據框(50K行,215列)中刪除重複列。該框架混合了離散的連續變量和分類變量。識別R數據框中的重複列
我的做法已經產生在幀到列表中的每個列的表,然後使用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))
這ISN」非常有效,特別是對於大型連續變量。不過,我已經走了這條路,因爲我已經無法使用摘要,得到相同的結果(注意,以下假設原始testframe
含重複):
summaries=apply(testframe,2,summary)
dups=which(duplicated(summaries))
testframe <- subset(testframe, select = -c(dups))
如果運行的代碼,你會看到它只會刪除找到的第一個重複。我想這是因爲我做錯了什麼。任何人都可以指出我出錯的地方,或者更好的是,指出我有更好的方法來從數據框中刪除重複的列嗎?
除了@kohske的建議,使用'digest',它可能足以使用'C',而不是'蘇mmary'作爲'lapply'功能。 – BenBarnes 2012-03-22 08:18:21
應該注意的是,字符向量的總結即使它們不同,也會產生相同的總結。這是因爲字符向量彙總只輸出向量的長度 – hshihab 2016-03-09 09:09:31