【发布时间】:2016-07-29 14:36:52
【问题描述】:
我正在努力在我的 data.frame 中创建一个新变量。对于可能不太清楚的问题标题,我深表歉意。我有一个如下所示的数据库:
obs year type
1 2015 A
2 2015 A
3 2015 B
4 2014 A
5 2014 B
我想在当前的 data.frame 中添加一列 (freq2015),该列按类型提供 2015 年的行数,并报告结果,不管考虑的年份,只要类型相同。这是我正在寻找的输出:
obs year type freq2015
1 2015 A 2 (there are 2 obs. of type A in 2015)
2 2015 A 2 (there are 2 obs. of type A in 2015)
3 2015 B 1 (there is 1 obs. of type B in 2015)
4 2014 A 2 (there are 2 obs. of type A in 2015)
5 2014 B 1 (there are 1 obs. of type B in 2015)
我知道如何使用dplyr 按年份向我的data.frame 添加行数:
data <- data %>%
group_by(year, type) %>%
mutate(freq = n())
但是,对于 year=="2014",添加的列将按种族显示 2014 行的计数,而不是 2015 年的计数。
我知道如何将 2015 年按种族划分的行数隔离到一个新的 data.frame 中:
data2015 <- dat[dat$year==2015,] %>%
group_by(type) %>%
mutate(freq2015 = n())
但我不知道如何为整个 data.frame 添加一列(2015 年的行数),条件是类型相同(如示例所示)。我正在寻找一种解决方案,可以阻止我明确使用“类型”变量模式。也就是说,我不想使用代码告诉 R:如果 type==A 则执行此操作,否则执行此操作。这个限制的原因是我的类型太多了。
有什么想法吗?提前谢谢你。
【问题讨论】:
-
为什么要这样做?生成年份和类型计数的汇总数据框可能更容易。