根据r中的总收入计算每个月的收入
假设某咨询公司每月发布公司a和B在区域alpha和beta的总收入,数据可能如下所示:根据r中的总收入计算每个月的收入,r,R,假设某咨询公司每月发布公司a和B在区域alpha和beta的总收入,数据可能如下所示: # generate data foo <- expand.grid(month = 1:3, region = c("alpha", "beta"), firm = c("A", "B"), stringsAsFactors = FALSE) foo <- foo[order(foo$month, foo$region),] rownames(foo) <- 1:nrow(foo) fo
# generate data
foo <- expand.grid(month = 1:3, region = c("alpha", "beta"), firm = c("A", "B"), stringsAsFactors = FALSE)
foo <- foo[order(foo$month, foo$region),]
rownames(foo) <- 1:nrow(foo)
foo <- foo[c(-1,-6),]
revenue <- c(1.5, 2, 2.1, 1.2, 3, 5.5, 3.2, 5, 5, 6)
foo <- cbind(foo, revenue)
foo
## month region firm revenue
## 2 1 alpha B 1.5
## 3 1 beta A 2.0
## 4 1 beta B 2.1
## 5 2 alpha A 1.2
## 7 2 beta A 3.0
## 8 2 beta B 5.5
## 9 3 alpha A 3.2
## 10 3 alpha B 5.0
## 11 3 beta A 5.0
## 12 3 beta B 6.0
#生成数据
foo我不完全确定这就是你想要的,但也许这会有帮助。我假设,收入
是每个公司/地区组合的总收入/累计收入
首先,我会注意到收入的首次出现(新分支,您的规则之一)
你的问题把我完全弄糊涂了。请把你要找的重新措辞。请记住,我们不在你的头脑中,不了解情况。我为我的英语感到抱歉,但这几乎是我想要的。谢谢~
result <- c(1.5, 2, 2.1, 1.2, 1, 3.4, 2, NA, 2, 0.5)
res <- cbind(foo, result)
res
## month region firm revenue result
## 2 1 alpha B 1.5 1.5
## 3 1 beta A 2.0 2.0
## 4 1 beta B 2.1 2.1
## 5 2 alpha A 1.2 1.2 ## a new branch launched by A at alpha in Feb.
## 7 2 beta A 3.0 1.0
## 8 2 beta B 5.5 3.4
## 9 3 alpha A 3.2 2.0
## 10 3 alpha B 5.0 NA ## the data of B at alpha in Feb. is missing
## 11 3 beta A 5.0 2.0
## 12 3 beta B 6.0 0.5
foo <- foo %>%
group_by(region, firm) %>%
mutate(first = first(month)) %>%
ungroup()
foo %>%
expand(firm, nesting(region, month)) %>%
left_join(foo) %>%
group_by(region, firm) %>%
mutate(result = ifelse(month == 1, revenue, revenue-lag(revenue))) %>%
mutate(result = ifelse((is.na(result)) & (month == first), revenue, result)) %>%
drop_na(revenue) %>%
select(-first) %>%
arrange(month, region)
# A tibble: 10 x 5
# Groups: region, firm [4]
firm region month revenue result
<chr> <chr> <int> <dbl> <dbl>
1 B alpha 1 1.5 1.5
2 A beta 1 2 2
3 B beta 1 2.1 2.1
4 A alpha 2 1.2 1.2
5 A beta 2 3 1
6 B beta 2 5.5 3.4
7 A alpha 3 3.2 2
8 B alpha 3 5 NA
9 A beta 3 5 2
10 B beta 3 6 0.5