按因子子集后R空数据帧

我需要根据一个因子变量的内容对我的数据进行子集化 . 我尝试用子集做到这一点:

new <- subset(data, original$Group1=="SALAD")

数据已经是较大数据帧的子集,原始我有因子变量,应该识别所需的行 . 这适用于因子变量的一个级别,但(我真的不明白为什么!!)当我用其他因子级别"BREAD"它创建数据框但是说“ no data available ” - 所以它是空的 . 如果这很重要,我已经从SPSS导入了数据 . 我已经检查了因子水平,但命名应该是正确的!

真的很感激帮助,我花了3个小时来解决这个问题,但却无法找到解决方案 . 我还尝试过其他方法对我的数据进行子集化(例如拆分),但我想要一个数据帧作为输出 .

你有没有一般的建议,如果我想要的话,最好的方法是 subset a data frame 此数据框的3列应为 extracted depending on the level of a factor (大多数代码示例仅适用于一列或所有列..)

回答(1)

2 years ago

subset 函数的整个点(据我所知)是在数据框内查找正确的变量 - 所以你可以输入

subset(data, var1 == "value")

代替

data[data$var1 == "value,]

如果不正确,请纠正我 .

现在,在您的情况下,您明确地从数据框 original 中获取 Group1 并将其用于子集 data - 您说这是 original 的子集 . 基于此,我认为 original$Group1 的元素将与 data 的行对齐,没有理由相信(并且每个理由都不相信) . 如果在 data 中定义 Group1 ,为什么不使用那里定义的副本 - 哪个是正确对齐的?如果没有,您需要非常清楚地了解您要完成的任务,以便确保事情正确对齐 .