r - 减去行并创建新的行名称

标签 r dataframe dplyr row subtraction

我想在此数据框中从佛罗里达中减去贝县,并创建一个名为“佛罗里达(-贝县)”的新行.

也许 group_modify 和 add_row (dplyr) 是可能的?

year <- c(2005,2006,2007,2005,2006,2007,2005,2006,2007,2005,2006,2007)
county <- c("Alachua County","Alachua County","Alachua County","Baker County","Baker County","Baker County","Bay County","Bay County","Bay County","Florida","Florida","Florida")
pop <- c(3,6,8,9,8,4,5,8,10,17,22,22)
gdp <- c(3,6,8,9,8,4,5,8,10,17,22,22)
area <- c(3,6,8,9,8,4,5,8,10,17,22,22)
density<-c(3,6,8,9,8,4,5,8,10,17,22,22)
df <- data.frame(year, county,pop,gdp,area,density, stringsAsFactors = FALSE)
<表类=“s-表”> <标题> 年 县 流行 国内生产总值 区域 密度 <正文> 2005 阿拉楚阿县 3 3 3 3 2005 贝克县 9 9 9 9 2005 湾县 5 5 5 5 2005 佛罗里达州 17 17 17 17 2005 佛罗里达州(-贝县) 12 12 12 12 2006 阿拉楚阿县 6 6 6 6 2006 贝克县 8 8 8 8 2006 湾县 8 8 8 8 2006 佛罗里达州 22 22 22 22 2006 佛罗里达州(-贝县) 14 14 14 14 2007 阿拉楚阿县 8 8 8 8 2007 贝克县 4 4 4 4 2007 湾县 10 10 10 10 2007 佛罗里达州 22 22 22 22 2007 佛罗里达州(-贝县) 12 12 12 12

最佳答案

如果您想尝试使用group_modifyadd_row,您可以考虑这样的事情。这里,当使用add_row时,使用map对组内的数据进行sum,但不包括“Florida”或“Bay County”。

library(tidyverse)

df %>%
  group_by(year) %>%
  group_modify(
    ~ .x %>%
      add_row(
        county = "Florida (-Bay County)",
        !!! map(.x %>% 
                  filter(!county %in% c("Florida", "Bay County")) %>%
                  select(-county),
                sum)
        )
  )

输出

    year county                  pop   gdp  area density
   <dbl> <chr>                 <dbl> <dbl> <dbl>   <dbl>
 1  2005 Alachua County            3     3     3       3
 2  2005 Baker County              9     9     9       9
 3  2005 Bay County                5     5     5       5
 4  2005 Florida                  17    17    17      17
 5  2005 Florida (-Bay County)    12    12    12      12
 6  2006 Alachua County            6     6     6       6
 7  2006 Baker County              8     8     8       8
 8  2006 Bay County                8     8     8       8
 9  2006 Florida                  22    22    22      22
10  2006 Florida (-Bay County)    14    14    14      14
11  2007 Alachua County            8     8     8       8
12  2007 Baker County              4     4     4       4
13  2007 Bay County               10    10    10      10
14  2007 Florida                  22    22    22      22
15  2007 Florida (-Bay County)    12    12    12      12

关于r - 减去行并创建新的行名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71647739/

相关文章:

r - 给定列名,提取最后一个非 NA 值

r - 从plot3d绘图中保存3D图形应用程序的文件

合并 XTS 数据时重复值

python - 如何正确使用 .apply(lambda x :) on dataframe column

r - 使用 dplyr 对每一行(按行)中的特定字符串(字符串)进行计数或求和

r - group_by 变量的 n 个唯一顺序值

r - 组合 tm R 中的单词未达到预期结果

r - 如何找到具有相同值的连续三行

python - 如何使用 pandas 在标题行中应用过滤器

java - 从嵌套的用户定义对象中创建 DataFrame