如何通过R中的可变列数进行子集/求和
我目前正在设计本质上是R中的最大化算法。我试图弄清楚的是如何对未定义数量的变量(每个变量都在自己的列中)应用“for each”和“subset by”(更准确地说,“count/sum if”) 在下面的示例中,我将使用一个具有3个变量列的数据集(不计算ID和类别变量,它们不是最大化过程的一部分)如何通过R中的可变列数进行子集/求和,r,R,我目前正在设计本质上是R中的最大化算法。我试图弄清楚的是如何对未定义数量的变量(每个变量都在自己的列中)应用“for each”和“subset by”(更准确地说,“count/sum if”) 在下面的示例中,我将使用一个具有3个变量列的数据集(不计算ID和类别变量,它们不是最大化过程的一部分) 库(plyr) 图书馆(dplyr) 示例数据我希望我在这里能正确理解您的意思---您可以使用网格获得所有可能的组合。展开。然后,您可以使用矢量化来检查所有行的样本数据是否更大。每行的组合 因此,首
库(plyr)
图书馆(dplyr)
示例数据我希望我在这里能正确理解您的意思---您可以使用网格获得所有可能的组合。展开。然后,您可以使用矢量化来检查所有行的样本数据是否更大。每行的组合
因此,首先检查行值是否更大。然后通过colSums==3
all_combs = t(expand.grid(percentiles[, 2], percentiles[, 3], percentiles[, 4]))
apply(sample_data[, 3:5], 1, function(x) sum(colSums(x >= all_combs) == 3))
不太确定您要查找的是什么,但如果您使用data.table
,您可以使用dt[condition1&condition2&condition3…,.N]
按多个条件进行子集,其中dt
是您的数据。table和.N
为您提供子集的行数。如果需要唯一值,可以使用unique
?
Ncount <- sum(sample_data[,c] >= PercentileN[,c]
& sample_data[,c + 1] >= PercentileN[,c + 1]
& ...
& sample_data[,ncol(sample_data)] >= PercentileN[,ncol(sample_data)]
)
all_combs = t(expand.grid(percentiles[, 2], percentiles[, 3], percentiles[, 4]))
apply(sample_data[, 3:5], 1, function(x) sum(colSums(x >= all_combs) == 3))