[英]summation of columns of a data.frame based on ifelse conditions in R?
[英]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
其中f
為mean
。 如果列的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.