簡體   English   中英

刪除條件為R的data.frame中的列

[英]Drop columns in a data.frame with conditions R

我想用R比以往任何時候都更懶,我想知道是否有機會通過使用條件從data.frame中刪除列。

例如,假設我的data.frame有50列。

我想刪除彼此共享的所有列

mean(mydata$coli)... = mean(mydata$coln) = 0

您如何編寫此代碼以便立即刪除它們? 因為我用它來刪除列

mydata2 <- subset(mydata, select = c(vari, ..., varn))

由於需要手動數據檢查,顯然沒有意思。

謝謝你們!

類似於@akrun使用lapply

mydata <- data.frame(col1=0, col2=1:7, col3=0, col4=-3:3)
mydata[lapply(mydata, mean)!=0]

# col2
#1    1
#2    2
#3    3
#4    4
#5    5
#6    6
#7    7

我們可以使用colMeans將所有列的mean作為vector ,將其轉換為邏輯索引( !=0 )並對數據集進行子集化。

mydata[colMeans(mydata)!=0]

或者使用Filter其中fmean 如果列的mean為0,則將其強制為FALSE ,將所有其他值強制為TRUE以過濾列。

Filter(mean, mydata)

數據

mydata <- data.frame(col1=0, col2=1:7, col3=0, col4=-3:3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM