数据集可在Kaggle上找到:https://www.kaggle.com/heesoo37/120-years-of-olympic-history-athletes-and-results/
我想知道我们是否可以使用Base R创建一个对象,该对象针对性别和季节的每种组合都包含数据集中不同运动项的数量?
我已经为此使用了dplyr软件包,并且可以正常工作:
data %>%
group_by(Sex, Season) %>%
summarise(num_sports_played = length(unique(Sport)))
但是我想知道是否也可以使用基数R。结果应该是一个4行3列的表格(性别,季节,参加的运动次数)。 注意:运动项目数是指独特运动项目的总数,例如: 性别:男/季节:夏/运动:男性在夏季运动会中从事的独特运动次数。
答案 0 :(得分:1)
执行此操作的一种方法是使用aggregate
。我认为,这是最简单的base
方法。您也可以使用其他功能,但这是最容易遵循的功能。
aggregate(Sport ~ Sex + Season, data = data,
FUN = function(x) length(unique(x)) )
Sex Season Sport
1 F Summer 40
2 M Summer 49
3 F Winter 14
4 M Winter 17
答案 1 :(得分:0)
是的。 Base R可以执行以下操作:
answer <- aggregate(formula = Sport ~ Sex + Season,
data = data,
FUN = length)
但是,在使用分组操作时,我建议在所有其他库(甚至是data.table
)上使用dplyr
。 data.table
的实现方式是:
data[, nrow(), by = list(Sex, Season)]
我发现data.table
比pandas
,data.frame
和dplyr
更为简洁。