R:仅当同一列中两行的值为true时,才在[行,列]中添加值
我正在尝试编写以下代码 我有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])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个 我尝试了以下解决方案,但没有成功
提前感谢您的帮助。您唯一真实的情况是: 如果(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
谢谢你们两位的帮助。
现在可以了
我做了以下工作:
由于描述不清楚,请给出一个小的可复制示例和预期输出