R:具有两个变量的子集

ing

这是对以下内容的后续操作:R:将增加值的子集设置为max(不包括减少值)

发布的解决方案有效,现在我想基于第二个变量添加一个较低的截止值。到目前为止,我还不确定如何使用data.table来实现这一点。例如,我想通过TrialNum将输出限制为B的最大值以及D == 1的第一个实例之后的所有值。我认为这意味着提取和使用与D的低截止值相关的索引(使用which?)。

TrialNum,Obs ,A,B,C,D
1,1,23,1,23,1
1,2,21,2,21,2
1,3,14,3,14,1
1,4,34,4,34,3
1,5,32,5,32,2
1,6,21,3,21,1
1,7,16,5,16,3
1,8,18,2,18,1 
2,1,26,1,26,1
2,2,11,2,11,2
2,3,23,3,23,1
2,4,12,4,12,1
2,5,3,2,3,1
2,6,4,3,4,3
2,7,22,1,22,1
2,8,15,2,15,1

预期的输出,

TrialNum,Obs,A,B,C,D
1,2,21,2,21,2
1,3,14,3,14,1
1,4,34,4,34,3
1,5,32,5,32,2
2,2,11,2,11,2
2,3,23,3,23,1
2,4,12,4,12,1

因此,这只是低截止值的第一个实例。确定起点之后,D降至阈值以下时,我不会丢失任何数据。就像昨天发布的解决方案一样,我尝试了在表达式中使用which来捕获max(B)和与D相关联的低截止值的变体。

最好使用data.table解决方案,因为它似乎当前在Windows R3.2.0上与data.table和dplyr不兼容。

数学咖啡

要解决您的问题,请考虑如何查找要查找的行号。

假设目前我们的数据框中只有一个TrialNum。在上一个问题中,您了解到要查找具有最大值的行B,可以使用which.max(B)

现在,您要查找D1所在的行,因此可以使用which(D==1)现在,如果多个行等于1,which将返回多个索引(请参阅参考资料?which),因此您可以使用[1]来获取仅第一次出现的索引。由于您不想包括该D==1行本身,因此请在索引:中添加1 which(D==1)[1] + 1

当您拥有这两个数字时,只需要它们之间的所有行即可(which(D==1)[1] + 1):which.max(B)

然后与结合使用,by=TrialNum以确保您的数据框仅包含一个数据框TrialNum

x[, .SD[(which(D==1)[1] + 1):which.max(B)], by=TrialNum]

(注意-如果没有行,该D==1怎么办?您将不得不考虑如何处理该行)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有两个变量的Java递归

matplotlib中具有两个变量的直方图

如何在r中的两个变量中保持具有相同值的行?

熊猫Groupby和sum具有两个变量-

ggplot中具有两个变量的直方图

算法:确定给定集合是否具有两个不相交的子集,以使两个子集中的元素之和相同?

R中具有相同变量的两个不同x轴的图

data.table J自变量:具有两个自变量的函数,两组分别具有一个固定的子集

具有两个名义变量的散点图

r-筛选数据框中的所有变量,以获取至少两个具有相同值的变量

传播具有两个变量的密钥

使用两个循环来循环两个变量,以生成R中具有不同数据和工作表名称的Excel文件

具有两个变量的素数检查器

在R中生成具有选定关联度的两个类别变量

RegExp测试具有两个变量:可能吗?

子集重复值具有两个不同的状态值

具有两个分组变量的T检验

创建两个具有两个属性的新变量的输出?

IF语句具有两个条件的相同变量

具有两个或更多变量的函子

R:具有两个变量和联系的秩函数。方法随机

R-具有两个结果变量的RandomForest

具有相同变量但范围不同的两个循环

如何拆分具有两个变量的列

定义具有两个变量的范围

R-如何合并两个不同时期具有相同变量的两个表?

使用 R 中的 Plotly 包绘制具有两个名义变量的散点图

Python中具有相同值的两个变量

在两个不同函数中具有两个相似变量的指针