r axis label



刪除R中的冗餘列 (2)

我有類似的東西:

date        pgm      in.x     logs       out.y
20130514    na       12       j1         12
20131204    z2       03       j1         03
20130516    a01      04       j0         04
20130628    z1       05       j2         05

我注意到輸入和輸出值總是相同的,所以我想刪除out.y列。 而且我還有其他的列,我希望能夠檢測到與.x列匹配的任何.y列,並在合併後刪除它們。


Answer #1

如果我們假設所有列冗餘都應該被刪除

no_duplicate <- data_set[!duplicated(as.list(data_set))]

會做的伎倆。

as.list會將as.list轉換為其所有列的列表, duplicated將返回具有所有值的列的索引作為以前看到的列的副本。

這並不是直接嘗試比較.x和.y列,而是保留每個重複列的副本,我認為這是主要目標。 另一方面,它也將刪除任何與另一個.x列重複的.x列。

如果我們想要保留所有的.x列,甚至那些重複的列,一個好的解決方案可能是在合併之前進行過濾。 假設你有data_xdata_y將被列“標識符”合併:

data_y_nonredundant <- data_y[!(as.list(data_y) %in% as.list(data_x) & names(data_y)!="identifier")]
data <- merge(data_x, data_y_nonredundant, by=c("identifier"))

Answer #2

我們同事的這些答案無疑是正確的,但更簡單的方式是:

dataframe[,5]  <- NULL




merge