我制作了一个数据框,该数据框具有一个带有日期的列和三个带有1或0的数值的列:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: Hello, World!
UBStcXNLrrB3CTV429OmCB35xiYZNCckQZ8LQ+RkcIetcWUTY5n4oYn+3WGGTvv6
ALCiRIKQgCjV9wFawAUAIPn4Otq+amdvmQYbCTgvWxxpZLHNu2Ixc2z0XsUnKRF3
7Ar3BK0Y72430x4XNtgxePKSeM6yChXyJ5NMGLf7zYBs3al+dpa8HxiWZwyaslRF
moZ3GljtkcRYiVTvDdROwItP
=G3b9
-----END PGP PUBLIC KEY BLOCK-----
我想添加一个新列,根据3个测试列中的值放置1或0。仅当所有测试列的值为0时,我才希望新列的值为1。如果 any 测试列的值为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
因此,我希望新列仅在 all 所有其他列等于0的情况下才返回值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 :(得分:2)
您可以根据其总和尝试有条件的交易吗?因此,如果所有3加在一起为0,则使新列为1。就像这样:
df$New <- ifelse(df$Test1 + df$Test2 + df$Test3 == 0, 1, 0)
答案 1 :(得分:1)
您的ifelse()
想法是一种不错的方法,但条件不同:
df$New <- ifelse(df$Test1 == 0 & df$Test2 == 0 & df$Test3 == 0,
1,
0)
&
指定必须同时满足所有要求,这意味着每个Test值必须为0才能为新列分配1。