Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据r中的总收入计算每个月的收入_R - Fatal编程技术网

根据r中的总收入计算每个月的收入

根据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

假设某咨询公司每月发布公司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)
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