R:仅当同一列中的两行中的值为真时才将值添加到 [row,column]

Posted

技术标签:

【中文标题】R:仅当同一列中的两行中的值为真时才将值添加到 [row,column]【英文标题】:R : adding the values in a [row,column] only if value is true in two rows within the same column 【发布时间】:2018-10-23 08:51:28 【问题描述】:

我正在尝试编写以下代码

我有 240 行和 11 列。 我想做以下事情: 如果(第 1 行第 1 列)中的值大于 0,并且(第 1 行第 2 列)中的值大于 0,则计算(第 1 行第 4 列)中的值。

例如:(行,列)

如果 (1,1) = (1) AND 如果 (1,2)=(1) 则计算 (1,4) 中的值

如果 (2,1) = (1) AND 如果 (2,2)=(0) 则不要计算 (2,4) 中的值

如果 (3,1) = (0) AND 如果 (3,2)=(1) 则不要计算 (3,4) 中的值

等等……

我已经看过一个非常相似的帖子,但是只给出了 1 个条件而不是 2 个。

我尝试了以下解决方案,但没有成功 sum(DataFrame_a[DataFrame_a[ ,1] > 0, DataFrame_a[ ,2] > 0, 4])

提前感谢您的帮助。

【问题讨论】:

请展示一个小的可重现示例和预期输出,因为根据描述不清楚 【参考方案1】:

你唯一的真实情况是:

如果 (1,1) = (1) AND 如果 (1,2)=(1) 则计算 (1,4) 中的值

我不懂算值

也许这个解决方案:

dplyr::mutate(new=ifelse(col1==1&col2==1,col4,0)

给你一个新的专栏 希望能解决你的问题

【讨论】:

【参考方案2】:

我同意彼得·哈恩的观点; ifelse 语句应该可以解决问题。

使用 dplyr 更优雅。为完整起见,以下是 base 中的示例:

x <- data.frame("X1" = 1:5, "X2" = c(0,1,0,1,1), "X3" = 10:14)
y <- NULL

y <- ifelse(x$X1 > 0 & x$X2 > 0, x$X3,0)

> y
[1]  0 11  0 13 14

> sum(y)
[1] 38

【讨论】:

【参考方案3】:

感谢两位的帮助。 现在可以了。

我做了以下事情:

true_sum

成功了。

再次感谢!

【讨论】:

以上是关于R:仅当同一列中的两行中的值为真时才将值添加到 [row,column]的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB $and 仅当 $and 在文档的同一数组索引中为真时才查询 - 特别是对于双重嵌套数组 [重复]

仅当表中不存在两个 id 的组合时才将值插入表中

仅当 Pandas 中的值为空/空时才合并

仅当在 Android 中单击按钮后条件为真时才启动 Activity

仅当一个条件为真时才用于 ON DUPLICATE KEY UPDATE 的 Terser 语法?

仅当数组列表尚不存在时才将其添加到数组列表中