【发布时间】:2018-07-17 18:28:07
【问题描述】:
我有一个如下所示的数据集:
fact_code style_serial
1004 style_101
1004 style_101
1004 style_101
1004 style_102
1004 style_102
1004 style_102
5002 style_101
5002 style_101
5002 style_101
5002 style_102
5002 style_102
5002 style_102
其中fact_code是工厂代码,style_serial是工厂生产的服装款式的序列号。我要生成的是一个变量,ss,看起来像这样:
fact_code style_serial ss
1004 style_101 1
1004 style_101 0
1004 style_101 0
1004 style_102 1
1004 style_102 0
1004 style_102 0
5002 style_101 1
5002 style_101 0
5002 style_101 0
5002 style_102 1
5002 style_102 0
5002 style_102 0
基本上这个变量ss可以通过Stata代码生成如下:
bysort fact_code style_serial: gen ss=_n==1
_n 是当前观测编号的 Stata 符号。
但我正在尝试使用 R 生成相同的虚拟变量ss,但不断出现错误。这些是我试图模仿上述 Stata 代码的 R 代码:
mydf <- mydf %>%
group_by(fact_code, style_serial) %>%
mutate(ss = n_distinct(fact_code, style_serial))
和
mydf <- mydf %>% group_by(fact_code, style_serial) %>%
mutate(ss = ave(mydf$fact_code, mydf$style_serial, FUN = seq_along))
R 数据框的名称是mydf。
任何帮助将不胜感激。
【问题讨论】:
-
mutate(s = as.integer(row_number() == 1L))?不过,我想这在 R 中不如在 Stata 中有用。 -
谢谢!这非常有效!
标签: r dataframe stata tidyverse