使用每个行向量 R 的总和对数据框进行子集化
Subsetting a data frame using the sum of each row vector R
您好,我正在从 csv 中读取一些数据,这些数据以二进制形式列出:
1 2 3 4...N
1 0 1 0 1...1
2 1 1 0 1...1
3 0 0 0 0...0
4 1 0 1 1...1
. 1 1 1 0...1
. 1 0 0 0...1
N 0 0 1 1...0
screenshot of str(data)
我想获取此数据的一个子集,其中行向量的总和大于某个数字,例如 10 或 x。第一列是客户 ID 的占位符列,因此需要将其排除在外。您对我如何着手做这件事有什么建议吗?
我一直在尝试各种方法,例如 df=subset()
,但我无法获得正确的语法。
提前致谢。
我们可以用 rowSums
df1[rowSums(df1) > 10, , drop = FALSE]
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
#7 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1 1
#9 1 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 1 0 1
更新
在 OP 的数据集中,第一列 'X' 不是二进制的并且有更大的数字。因此,当我们包含该变量时,rowSums
将大于 10。它是索引 ID,不会在计算中使用。因此,通过在 rowSums
中删除它,它会很好地子集
df1[rowSums(df1[-1])> 10,]
数据
set.seed(24)
df1 <- as.data.frame(matrix(sample(0:1, 10* 20, replace = TRUE), ncol = 20))
您好,我正在从 csv 中读取一些数据,这些数据以二进制形式列出:
1 2 3 4...N
1 0 1 0 1...1
2 1 1 0 1...1
3 0 0 0 0...0
4 1 0 1 1...1
. 1 1 1 0...1
. 1 0 0 0...1
N 0 0 1 1...0
screenshot of str(data)
我想获取此数据的一个子集,其中行向量的总和大于某个数字,例如 10 或 x。第一列是客户 ID 的占位符列,因此需要将其排除在外。您对我如何着手做这件事有什么建议吗?
我一直在尝试各种方法,例如 df=subset()
,但我无法获得正确的语法。
提前致谢。
我们可以用 rowSums
df1[rowSums(df1) > 10, , drop = FALSE]
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
#7 0 0 0 1 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1 1
#9 1 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 1 0 1
更新
在 OP 的数据集中,第一列 'X' 不是二进制的并且有更大的数字。因此,当我们包含该变量时,rowSums
将大于 10。它是索引 ID,不会在计算中使用。因此,通过在 rowSums
中删除它,它会很好地子集
df1[rowSums(df1[-1])> 10,]
数据
set.seed(24)
df1 <- as.data.frame(matrix(sample(0:1, 10* 20, replace = TRUE), ncol = 20))