[英]How to remove duplicated (by name) column in data.tables in R?
在使用fread
讀取數據集時,我注意到有時我會得到重復的列名,例如( fread
沒有check.names
參數)
> data.table( x = 1, x = 2)
x x
1: 1 2
問題是:如果它們具有相同的名稱,有沒有辦法刪除 2 列中的 1 列?
怎么樣
dt[, .SD, .SDcols = unique(names(dt))]
這將選擇每個名稱的第一次出現(我不確定您想如何處理)。
正如@DavidArenburg 在上面的評論中所建議的那樣,您可以在data.table()
或fread()
使用check.names=TRUE
.SDcols
方法將返回您選擇的列的副本。 相反,只需使用:=
通過引用刪除那些重復的列。
dt[, which(duplicated(names(dt))) := NULL]
# x
# 1: 1
不同的方法:
索引
my.data.table <- my.data.table[ ,-2]
子集
my.data.table <- subset(my.data.table, select = -2)
如果 1. 和 2. 不理想,則使用唯一名稱(例如,當有數百列時)
setnames(my.data.table, make.names(names = names(my.data.table), unique=TRUE))
可選地系統化刪除名稱符合某些標准的變量(在這里,我們將刪除名稱以“.X”結尾的所有變量(X 是一個數字,使用make.names
時從 2 開始)
my.data.table <- subset(my.data.table, select = !grepl(pattern = "\\\\.\\\\d$", x = names(my.data.table)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.