我需要根据一个因子变量的内容对我的数据进行子集化。 我尝试用子集做到这一点:
new <- subset(data, original$Group1=="SALAD")
数据已经是更大数据框的一个子集,在原始中我有一个因子变量,它应该标识所需的行。 这对于因子变量的一个级别非常有效,但是(我真的不明白为什么!!)当我使用其他因子级别“BREAD”执行此操作时,它会创建数据框但是说“没有数据可用“ - 所以它是空的。如果这很重要,我已经从SPSS导入了数据。我已经检查了因子水平,但命名应该是正确的!
非常感谢您的帮助,我花了3个小时来解决这个问题并且无法找到解决方案。 我还尝试了其他方法来对我的数据进行子集化(例如 split ),但我希望将数据帧作为输出。
您是否有一般性的建议,如果我需要,对数据框进行子集的最佳方式是什么?此数据框的3列应根据因子的级别提取(大多数代码示例仅适用于一列或所有列。)
答案 0 :(得分:0)
subset
函数的整个点(据我理解)是在数据框内查找正确的变量 - 所以你可以输入
subset(data, var1 == "value")
而不是
data[data$var1 == "value,]
如果不正确,请纠正我。
现在,在您的情况下,您明确从数据框Group1
中获取original
并将其用于子集data
- 您说这是{{1}的子集}}。基于此,我认为没有理由相信(并且完全不相信)original
的元素将与original$Group1
的行对齐。如果在data
中定义Group1
,为什么不使用在那里定义的副本 - 哪个是正确对齐的?如果没有,您需要非常清楚地了解您要完成的任务,以便确保事情正确对齐。