R:根据具有多列的条件添加新列
我制作了一个dataframe,其中一列包含日期,三列包含数值,1或0: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时,我
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$全新感谢您提供的伟大解决方案!谢谢你的伟大解决方案!