Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过R中的可变列数进行子集/求和_R - Fatal编程技术网

如何通过R中的可变列数进行子集/求和

如何通过R中的可变列数进行子集/求和,r,R,我目前正在设计本质上是R中的最大化算法。我试图弄清楚的是如何对未定义数量的变量(每个变量都在自己的列中)应用“for each”和“subset by”(更准确地说,“count/sum if”) 在下面的示例中,我将使用一个具有3个变量列的数据集(不计算ID和类别变量,它们不是最大化过程的一部分) 库(plyr) 图书馆(dplyr) 示例数据我希望我在这里能正确理解您的意思---您可以使用网格获得所有可能的组合。展开。然后,您可以使用矢量化来检查所有行的样本数据是否更大。每行的组合 因此,首

我目前正在设计本质上是R中的最大化算法。我试图弄清楚的是如何对未定义数量的变量(每个变量都在自己的列中)应用“for each”和“subset by”(更准确地说,“count/sum if”)

在下面的示例中,我将使用一个具有3个变量列的数据集(不计算ID和类别变量,它们不是最大化过程的一部分)

库(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))