Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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:仅当同一列中两行的值为true时,才在[行,列]中添加值_R_Loops_If Statement_Rows - Fatal编程技术网

R:仅当同一列中两行的值为true时,才在[行,列]中添加值

R:仅当同一列中两行的值为true时,才在[行,列]中添加值,r,loops,if-statement,rows,R,Loops,If Statement,Rows,我正在尝试编写以下代码 我有240行11列。 我想做以下工作: 如果(第1行,第1列)中的值大于0,并且(第1行,第2列)中的值大于0,则计算(第1行,第4列)中的值 例如:(行,列) 如果(1,1)=(1)和(1,2)=(1),则计算(1,4)中的值 如果(2,1)=(1)和(2,2)=(0),则不计算(2,4)中的值 如果(3,1)=(0)和(3,2)=(1),则不计算(3,4)中的值 等等 我已经看到了一个非常类似的帖子,但是只给出了1个条件,而不是2个 我尝试了以下解决方案,但没有成功

我正在尝试编写以下代码

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

例如:(行,列)

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

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

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

等等

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

我尝试了以下解决方案,但没有成功 总和(数据帧a[数据帧a[,1]>0,数据帧a[,2]>0,4])


提前感谢您的帮助。

您唯一真实的情况是:

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

我不懂计算价值

也许这个解决方案:

dplyr::mutate(new=ifelse(col1==1&col2==1,col4,0)
给你一个新的专栏
希望能解决你的问题

我同意彼得·哈恩的观点;一个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
xy
[1]  0 11  0 13 14
>总和(y)
[1] 38

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

我做了以下工作:


由于描述不清楚,请给出一个小的可复制示例和预期输出