如何做下面的行操作

How to do the following row operation

以下是示例数据。手头的任务是对所有权代码 30 的 quarter1 和 quarter2 求和,但排除 indcode 115。从那里完成包含此总和的新行。在 excel 中,这非常简单,但希望使用 R 将其自动化一点。所需结果的下半部分如下所示。第一个问题是我会 pivot_wider 以便我对列而不是行求和吗?

 area <- c(000000,000000,000000,000000,000000,000000,000000,000000,000000,000000,000000,000000)
 indcode <- c(110,111,112,113,114,115,110,111,112,113,114,115)
 quarter1 <- c(NA,2,4,6,16,3,NA,1,2,3,8,2)
 quarter2 <- c(2,3,5,7,22,1,9,1,2,4,11,1)
 ownership <- c(00,00,00,00,00,00,30,30,30,30,30,30)

 employment <- data.frame(area,indcode,quarter1,quarter2,ownership)


 area     indcode     quarter1     quarter2       ownership
000000      111           1            1              30
000000      112           2            2              30
000000      113           3            4              30
000000      114           8            11             30
000000      115           2            1              30
000000      993           14           18             30

我假设您希望为 area 组完成此操作,但如果没有,您可以删除 group_by(area) 行。

employment %>%
  group_by(area) %>%
  summarize(
    across(quarter1:quarter2, ~sum(.x[ownership == 30 & indcode != 115], na.rm = TRUE)),
    indcode = 993,
    ownership = 30
  ) %>%
  bind_rows(employment, .)
#   area indcode quarter1 quarter2 ownership
# 1     0     111        2        3         0
# 2     0     112        4        5         0
# 3     0     113        6        7         0
# 4     0     114       16       22         0
# 5     0     115        3        1         0
# 6     0     111        1        1        30
# 7     0     112        2        2        30
# 8     0     113        3        4        30
# 9     0     114        8       11        30
# 10    0     115        2        1        30
# 11    0     993       14       18        30