我正试图通过计算简单的Herfindahl指数 市场份额(1)^ 2 +市场份额(2)^ 2(忽略NA但用它来计算市场份额)。我尝试了几种方法,但仍然包含在我的最终HI计算中。
我的数据
df = data.frame(ID = c(1L, 1L, 1L, 2L, 2L, 2L, 4L, 4L, 4L),
ID_name = c("AA", "AA", "", "BB", "BB", "", "", "DD", "DD"),
Volume = c(10L, 20L, 30L, 50L, 50L, 40L, 20L, 30L, 10L))
我试过
df%>%
mutate(Hasparent_org_id = ifelse(is.na(ID_name), 0, 1)) %>%
group_by(ID) %>%
summarise(sum_TRx = sum(Volume),HHI =sum(((Volume/sum(Volume))^2)*Hasparent_org_id))
我得到了这个
ID MKT_Vol HHI (int) (int) (dbl) 1 1 60 0.3888889 2 2 140 0.3367347 3 4 60 0.3888889
但我想得到这个
bf = data.frame(ID = c(1L, 2L, 4L),
Volume = c(60L, 140L, 60L),
HHI = c(0.14,0.25, 0.26 ))
基本上,包括与NA条目相对应的数量来计算市场份额,但不包括在HI计算中。
答案 0 :(得分:1)
问题出在is.na
检查中。 NA
中有没有 Hasparent_org_id
值 - 您有一些空字符串""
。
df%>%
mutate(Hasparent_org_id = ifelse(ID_name=="", 0, 1)) %>%
group_by(ID) %>%
summarise(sum_TRx = sum(Volume),HHI =sum(((Volume/sum(Volume))^2)*Hasparent_org_id))
支票的这一变化似乎可以解决您的问题。