[英]Subset dataframe such that all values in each row are less than a certain value
我有一個帶有維列和4個值列的數據框。 我如何子集該列,以便每個記錄的所有4列都小於給定的x? 我知道我可以使用子集並為每列指定條件來手動執行此操作,但是是否可以使用Apply函數來執行此操作? 下面是一個示例數據框。 例如,假設x為0.7。 在那種情況下,我想消除該行中任何列大於0.7的任何行。
zips ABC DEF GHI JKL
1 1 0.8 0.6 0.1 0.6
2 2 0.1 0.3 0.8 1.0
3 3 0.5 0.1 0.4 0.8
4 4 0.6 0.4 0.2 0.3
5 5 1.0 0.8 0.6 0.5
6 6 0.2 0.7 0.3 0.4
7 7 0.3 1.0 1.0 0.2
8 8 0.7 0.9 0.5 0.1
9 9 0.9 0.5 0.9 0.7
10 10 0.4 0.2 0.7 0.9
以下功能似乎有效,但是有人可以在這里解釋邏輯嗎?
Variance_Percentile[!rowSums(Variance_Percentile[-1] > 0.7), ]
zips ABC DEF GHI JKL
4 4 0.6 0.4 0.2 0.3
6 6 0.2 0.7 0.3 0.4
您可以rowSums()
集使用否定的rowSums()
df[!rowSums(df[-1] > 0.7), ]
# zips ABC DEF GHI JKL
# 4 4 0.6 0.4 0.2 0.3
# 6 6 0.2 0.7 0.3 0.4
df[-1] > 0.7
給我們一個邏輯矩陣,告訴我們哪個df[-1]
大於0.7 rowSums()
對這些行進行求和(每個TRUE值等於1,FALSE為零) !
將這些值轉換為邏輯值並將它們取反,這樣我們就可以得到任何零的行總和(FALSE),並將它們轉換為TRUE。 換句話說,如果rowSums()
結果為零,則需要這些行。 獲得相同邏輯向量的另一種方法是
rowSums(df[-1] > 0.7) == 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.