0

我有一个包含 4 列的数据框,标题为“年份”“姓名”“性别”“金额”。这是一个示例数据集

set.seed(1)
    data = data.frame(year=sample(1950:2000, 50, replace=TRUE),name=sample(LETTERS, 50, replace=TRUE),
                       sex=sample(c("M", "F"), 50, replace=TRUE), amount=sample(40:100, 50, replace=TRUE))

我只想找到同时出现“m”和“f”的名称,并将每年的金额相加。

任何帮助将不胜感激

4

1 回答 1

1

我稍微更改了数据,以便在某些年份会有通用名称。在目视检查这似乎工作。如果您不熟悉,语法可能会显得有点神秘,data.table但它很简洁并且应该非常有效:

require(data.table)
set.seed(1)
data = data.frame(year=sample(1950:1960, 100, replace=TRUE),name=sample(LETTERS, 100, replace=TRUE),
                  sex=sample(c("M", "F"), 100, replace=TRUE), amount=sample(40:100, 100,  replace=TRUE))
setDT(data) ## change to data.table format
data[, common=sum(amount[name %in% intersect(name[sex=="M"], name[sex=="F"])]), by=year]
于 2014-10-13T20:20:49.663 回答