这个问题可能已在本网站的某个地方讨论过,但经过多次搜索后我无法找到。 我们假设我的数据帧只有2列,可以用下面的代码
生成df=data.frame(brand=c('Audi','BMW','Audi','Toyota','Audi','Toyota'),
Model=c('A3','x', 'A4','Corolla','A5','Camry'))
现在我有兴趣看到每个品牌,有哪些型号可供选择。我不想总结或意味着什么。这应该是一个简单的解决方案,但我无法找到它。
我能找到的最好的方法是使用dcast
包中的reshape2
。我做了
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
前两列正是我想要的,但我想我不必要地生成第三列然后丢弃以后的列。此外,有可能在没有任何额外库的情况下完成此操作。
所以我的问题是,是否有更好或更有效的方法来处理这个问题?
(我的实际数据给出了最后一栏下的计数'。我不知道为什么我创建的简化示例不给出计数但是只重复第二列中的值如果必须的话,我会把它当作一个单独的问题!)
答案 0 :(得分:1)
您只需按data.frame
和brand
订购Model
即可。如果您有重复的值,则可以使用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