我有一个名为“输入”的大型数据集。数据集中的一列是一个名为“约束”的标记,带有“Y”或“N”。我想创建两个数据集,其中一个是标志为“Y”的行,另一个是标志为“N”的行。
我试过了:
ifelse(inputs$constrained == "N",unconstrained <- inputs,constrained <- inputs)
但是无约束和约束的数据集与输入相同。
我做错了什么?
答案 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)
行。