我的数据有两个因素:行业和时间。
industry time
1 1990
1 1990
2 1990
2 1991
3 1990
3 1990
我想创建一个因素A
,将具有相同行业和时间的观察结果放入每个级别:
industry time A
1 1990 1
1 1990 1
2 1990 2
2 1991 3
3 1990 4
3 1990 4
答案 0 :(得分:1)
如果您不太在意A列中的实际数字,则可以使用
transform(dd, A=as.numeric(interaction(industry, time)))
或者,如果实际上并不需要是一个数字,而是一个因子,那么就可以
transform(dd, A=interaction(industry, time))
使用
中的数据进行了测试dd <-read.table(text="industry time
1 1990
1 1990
2 1990
2 1991
3 1990
3 1990", header=TRUE)
答案 1 :(得分:0)
group_by
将获得industry
和time
的所有唯一组合。使用row_number
,我们可以排除重复的组合(如果A == 1,则仅累加)
library(dplyr)
df %>% group_by(industry,time) %>% mutate(A=row_number()) %>%
ungroup() %>% mutate(B=cumsum(A==1))
# A tibble: 6 x 4
industry time A B
<int> <int> <dbl> <dbl>
1 1 1990 1 1
2 1 1990 2 1
3 2 1990 1 2
4 2 1991 1 3
5 3 1990 1 4
6 3 1990 2 4