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 在文档的同一数组索引中为真时才查询 - 特别是对于双重嵌套数组 [重复]
仅当在 Android 中单击按钮后条件为真时才启动 Activity