根据条件根据列的总和值创建新的数据框

达蒙·罗伯茨

我目前有一个数据框,看起来像这样:

census_2
# A tibble: 236,844 x 5
   STATE  RACE CENSUS2010POP POPESTIMATE2012
   <chr> <dbl>         <dbl>           <dbl>
 1 01        1         37991           37824
 2 01        1         38150           38597
 3 01        1         39738           37653
 4 01        1         39827           38113
 5 01        1         39353           39628
 6 01        1         39520           39821
 7 01        1         39813           39425
 8 01        2         39695           39636
 9 01        2         40012           39957
10 01        2         42073           39856
# … with 236,834 more rows, and 1 more variable:
#   POPESTIMATE2016 <dbl>

“状态”列将是我要普遍分组的内容。我将在race列中有多行代表相同的值。CENSUS2010POP列是该州特定种族群体的人口普查估计值。

因此,我最终想要做的是为该州的每个种族群体的估计值提供一列。例如,在原始数据集中,州= 1&种族= 1是指州1中白人成分的总体。我想要的是汇总该状态下针对白人人口的观测值,并将该估计值转化为一列。然后,对于数据集中的第三列,我将获得该特定状态下非白人的人口估计值的总和,例如,它等于上述原始数据集中的RACE = 2。这是一个简单的示例:

STATE  WHITE_CENSUS10POP                                  NONWHITE_CENSUS10POP
1      = summation(nrow where state == 1 & race == 1)     = summation(nrow where state == 1 & race == 2)
2.     = summation(nrow where state == 2 & race == 1)     = summation(nrow where state == 2 & race == 2)
3
4
5
6
...
50
阿克伦

有多种方法可以做到这一点。一个没有其他软件包依赖性的简单选项(假设只有两个“ race”)是对“ STATE”summarise进行分组,并根据“ race”的值对“ CENSUS2010POP”进行子集化,从而获得两列,sum

library(dplyr)
df1 %>%
   group_by(STATE) %>%
   summarise(WHITE_CENSUS10POP = sum(CENSUS2010POP[race == 1]),
             NONWHITE_CENUS10POP = sum(CENSUS2010POP[race == 2]), 
            .groups = 'drop')

一个更通用的选择是将sum“ CENSUS2010POP”按“ STATE”,“ race”分组,然后将“ long”格式的数据旋转为“ wide”,pivot_wider

library(tidyr)
df1 %>%
   group_by(STATE, race) %>%
   summarise(value = sum(CENSUS2010POP), .groups = 'drop') %>%
   pivot_wider(names_from = race, values_from = value)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数据框 - 根据条件创建新列

根据熊猫数据框中其他列的条件和值创建新列

根据其他两个数据框列中的值条件创建新列

根据条件在数据框中创建新列

如何根据条件在数据框中创建新列

如何根据条件在熊猫数据框中创建新列?

根据多个列中的值创建新的数据框列

根据过去的值创建新的数据框列

根据两列的条件创建数据框

如何根据 julia 中的其他列值有条件地在数据框中创建新列

在根据条件比较 2 个数据框列后,如何创建新的 Pandas 数据框?

如何根据数据框 B 中的多个条件在数据框 A 中创建新列

根据数据框列总和创建熊猫系列

根据数据框的列表和列之间的值匹配来创建新的数据框

如何根据python数据框中现有列的条件创建新列?

根据现有列中的条件在数据框中创建新列

如何根据其他列的条件在数据框中创建新列?

根据条件从数据框中的现有列创建新列

根据条件在熊猫数据框中添加新列,并替换不同列中的Nan值

熊猫:比较数据框的列并根据条件添加新的列和值

根据空值的条件将两列从同一数据框合并到新列

根据条件创建新列

Pandas 数据框根据另一列的条件创建新行

R-根据条件在数据框中创建新列

根据多种条件在pandas数据框中创建一个新列

根据另一个数据框中的日期条件创建新列

根据多个不同的条件在 pandas 数据框中创建了一个新列

根据不同条件在Pandas数据框中创建一个新列

Python:处理不同大小的数据框以根据日期时间条件创建新列