假设我有这样一个 Dataframe :
location species
1 seattle A
2 buffalo C
3 seattle D
4 newark J
5 boston Q
我想在这个框架中添加一列,显示某个位置在数据集中出现的次数,结果如下:
location species freq-loc
1 seattle A 2 #there are 2 entries with location=seattle
2 buffalo C 1 #there is 1 entry with location=buffalo
3 seattle D 2
4 newark J 1
5 boston Q 1
我知道使用table(data$location)
可以给我一个列联表,但是我不知道如何将表中的每个值Map到 Dataframe 中相应的条目,有人能帮忙吗?
- 更新**
非常感谢您的帮助!出于兴趣,我运行了一个基准测试,看看merge、plyr和ave解决方案的运行情况如何。测试集是我最初的10 x~7mil数据集的10,000行子集。
Unit: milliseconds
expr min lq median uq max neval
MERGE 110.877337 111.989406 112.585420 113.51679 120.23588 100
PLYR 26.305645 27.080403 27.576580 27.87157 68.40763 100
AVE 2.994528 3.117255 3.179898 3.35834 10.02955 100
4条答案
按热度按时间xmakbtuz1#
这是一个带
ave
的基本R方式。w8ntj3qf2#
我肯定有人会贴一个(丑;))
ave
或plyr
解决方案,下面是data.table
解决方案:x9ybnkn63#
使用基:table 然后 merge:
另外,我听到了对
plyr
的请求:fjaof16o4#
尝试在列名中使用破折号会非常痛苦。最好使用下划线或“点”。
我尝试使用
ave
而不使用第一列中的as.numeric
,但令我惊讶的是,得到了与因子水平相关的模糊错误消息。