如何通过两个因素来创建一个因素

时间:2018-08-23 20:12:49

标签: r

我的数据有两个因素:行业和时间。

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

2 个答案:

答案 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将获得industrytime的所有唯一组合。使用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