R 按另一列的级别列出一列的子级别

R 按另一列的级别列出一列的子级别,r,reshape2,dcast,R,Reshape2,Dcast,有可能这个问题已经在这个网站的某个地方讨论过了,但我在几次搜索后都找不到。 假设我的dataframe只有2列,可以用下面的代码生成 df=data.frame(brand=c('Audi','BMW','Audi','Toyota','Audi','Toyota'), Model=c('A3','x', 'A4','Corolla','A5','Camry')) 现在我有兴趣了解每个品牌的可用型号。我不想总结或意味着什么。这应该是一个简单的解决方案,但我无法找到它 我能找到的最好的方法是使用

有可能这个问题已经在这个网站的某个地方讨论过了,但我在几次搜索后都找不到。 假设我的dataframe只有2列,可以用下面的代码生成

df=data.frame(brand=c('Audi','BMW','Audi','Toyota','Audi','Toyota'),
Model=c('A3','x', 'A4','Corolla','A5','Camry'))
现在我有兴趣了解每个品牌的可用型号。我不想总结或意味着什么。这应该是一个简单的解决方案,但我无法找到它

我能找到的最好的方法是使用
dcast
from
reformae2
package。我知道

dcast(df,brand+Model~.)
我明白了

   brand   Model       .
1   Audi      A3      A3
2   Audi      A4      A4
3   Audi      A5      A5
4    BMW       x       x
5 Toyota   Camry   Camry
6 Toyota Corolla Corolla  
前两列正是我想要的,但我认为我不必要地生成了第三列,然后丢弃了第三列。此外,这也有可能在没有任何附加库的情况下完成

所以我的问题是,有没有更好或更有效的方法来处理这个问题


(我所拥有的实际数据在“.”下的最后一列给出了计数。我不知道为什么我创建的简化示例没有给出计数,而只是重复第二列中的值。如果有必要,我将把它作为一个单独的问题处理!)

您只需按
品牌
型号
订购
数据框
。如果有重复的值,则可以使用
unique()
仅获取不同的组合

unique(df[order(df$brand, df$Model), ])
返回

   brand   Model
1   Audi      A3
3   Audi      A4
5   Audi      A5
2    BMW       x
6 Toyota   Camry
4 Toyota Corolla