簡體   English   中英

子集數據幀,以使每一行中的所有值都小於某個特定值

[英]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.

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