使用ifelse有条件地拆分数据帧

时间:2013-01-02 22:06:26

标签: r

我有一个名为“输入”的大型数据集。数据集中的一列是一个名为“约束”的标记,带有“Y”或“N”。我想创建两个数据集,其中一个是标志为“Y”的行,另一个是标志为“N”的行。

我试过了:

ifelse(inputs$constrained == "N",unconstrained <- inputs,constrained <- inputs)

但是无约束和约束的数据集与输入相同。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

first <- split(inputs, inputs$constrained)[1]
second <- split(inputs, inputs$constrained)[2]

如果你想使用“[”你可以这样做:

 unconstrd <- inputs[ inputs$constrained == "N" , ]
 constrd <-  inputs[ ! inputs$constrained == "N" , ]

这两个第二个选项都可能包含“受约束”为NA的条目,因为R处理NA条件的方式很复杂,尽管它不会忠实地反映这些行。 (我承认我不确定分裂方法对NA的作用。)我刚刚测试了分割方法,它可能更优越,因为(如subset)它不会返回is.na(input$constrained)行。