我来自 Stata,正在努力适应 dplyr 中的 group_by。也许使用 group_by 是错误的方法,但是如果您了解 Stata,您就会明白我为什么要尝试使用它(我认为)。
我想转换数据,如下所示:
本质上,我试图将每个 NAICS 代码折叠成一行,并为每个 NAICS 代码的 CONC 和 HHI 下的 5 个统计信息创建列(CONC 的 4 个值和 HHI 的一个值,忽略 X)
数据在这里。我正在尝试的代码如下:
ManufMktConc <- read.csv("Manufacturing.csv",
stringsAsFactors = FALSE)
ManufMktConc %<>%
tbl_df %>%
slice(-1) %>%
filter(CONCENFI.display.label!="All companies") %>%
select(-GEO.id,-GEO.id2,-GEO.display.label,-COMPANY,-RCPTOT,-YEAR.id)
ManufMktConc_byInd <- group_by(ManufMktConc,NAICS.id)
ManufMktConc_byInd %<>%
arrange(CONCENFI.id) %>%
mutate(FourFirm = ManufMktConc_byInd$CCORCPPCT[ManufMktConc_byInd$CONCENFI.id=="856"])
这给了我以下错误:
> ManufMktConc_byInd %<>% arrange(CONCENFI.id) %>% mutate(FourFirm=ManufMktConc_byInd$CCORCPPCT[ManufMktConc_byInd$CONCENFI.id=="856"])
Error: incompatible size (651), expecting 4 (the group size) or 1
所以我可以说我要求 R 将 651 个实例ManufMktConc_byInd$CONCENFI.id == "856"放入 4 个组中。我想这就是我对 group_by 的理解分崩离析的地方。为什么我的逻辑陈述不只适用于每个组?
谢谢你。
