R:根据具有多列的条件添加新列

R:根据具有多列的条件添加新列,r,dplyr,aggregate,R,Dplyr,Aggregate,我制作了一个dataframe,其中一列包含日期,三列包含数值,1或0: Date Test1 Test2 Test3 18-3-2016 1 0 0 18-3-2016 0 0 1 19-4-2016 1 0 0 12-2-2017 0 0 0 15-2-2017 0 0 0 我想添加一个新列,根据3个测试列中的值放置1或0。只有当所有测试列的值都为0时,我

我制作了一个dataframe,其中一列包含日期,三列包含数值,1或0:

Date      Test1  Test2  Test3
18-3-2016   1      0      0
18-3-2016   0      0      1
19-4-2016   1      0      0
12-2-2017   0      0      0
15-2-2017   0      0      0

我想添加一个新列,根据3个测试列中的值放置1或0。只有当所有测试列的值都为0时,我才希望新列的值为1。如果任何测试列的值为1,则它应在新列中返回值0。新的所需数据帧如下所示:

Date      Test1  Test2  Test3  New
18-3-2016   1      0      0     0
18-3-2016   0      0      1     0
19-4-2016   1      0      0     0
12-2-2017   0      0      0     1
15-2-2017   0      0      0     1
因此,如果所有其他列都等于0,我希望新列只返回值1,否则它应该将值放置为0

我已经尝试了一些代码,但它将所有列分隔开,并给出了不希望的输出:

df$New <- ifelse(df[2:4] >0, 1, 0)

Date      Test1  Test2  Test3  New.Test1  New.Test2  New.Test3       
18-3-2016   1      0       0      0            1         1
18-3-2016   0      0       1      1            1         0
19-4-2016   1      0       0      0            1         1
12-2-2017   0      0       0      1            1         1
15-2-2017   0      0       0      1            1         1
感谢您的帮助。

您的ifelse想法是一个很好的方法,不同之处在于:

df$New <- ifelse(df$Test1 == 0 & df$Test2 == 0 & df$Test3 == 0,
                  1,
                  0)
&指定必须同时满足所有要求,这意味着每个测试值必须为0才能将1分配给新列

你的ifelse想法是一个很好的方法,不同之处在于:

df$New <- ifelse(df$Test1 == 0 & df$Test2 == 0 & df$Test3 == 0,
                  1,
                  0)

&指定必须同时满足所有要求,这意味着每个测试值必须为0才能将1分配给新列

您可以尝试基于其总和的条件吗?因此,如果所有3个相加为0,则将新列设为1。像这样:


df$New您可以尝试基于其总和的条件吗?因此,如果所有3个相加为0,则将新列设为1。像这样:


df$全新感谢您提供的伟大解决方案!谢谢你的伟大解决方案!