子集数据框,使每行中的所有值都小于某个值
Subset dataframe such that all values in each row are less than a certain value
我有一个包含维度列和 4 个值列的数据框。如何对列进行子集化,使每条记录的所有 4 列都小于给定的 x?我知道我可以使用 subset 手动执行此操作并为每一列指定条件,但是有没有办法使用 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()
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
我有一个包含维度列和 4 个值列的数据框。如何对列进行子集化,使每条记录的所有 4 列都小于给定的 x?我知道我可以使用 subset 手动执行此操作并为每一列指定条件,但是有没有办法使用 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()
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.7rowSums()
这些行的总和(每个 TRUE 值等于 1,FALSE 为零)!
将这些值转换为逻辑值并将它们求反,以便我们得到任何为零 (FALSE) 的行总和并将它们变为 TRUE。换句话说,如果rowSums()
结果为零,我们需要这些行。- 我们将该逻辑向量用于行子集
获得相同逻辑向量的另一种方法是
rowSums(df[-1] > 0.7) == 0