如何使用 rbind 将行添加到数据框 R

How to add rows to dataframe R with rbind

我知道这是一个经典问题,存档中也有类似的问题,但我觉得答案并不真正适用于这个案例。基本上我想获取一个数据框(柏林每个地区的 covid 案例),计算列的总和并创建一个新的数据框,其中一列代表地区名称,另一列代表总数。所以我写了

covid_bln <- read.csv('https://www.berlin.de/lageso/gesundheit/infektionsepidemiologie-infektionsschutz/corona/tabelle-bezirke-gesamtuebersicht/index.php/index/all.csv?q=', sep=';')
c_tot<-data.frame('district'=c(), 'number'=c())
for (n in colnames(covid_bln[3:14])){
    x<-data.frame('district'=c(n), 'number'=c(sum(covid_bln$n)))
    c_tot<-rbind(c_tot, x)
    next
}
print(c_tot)

这对名称有效,但 returns 仅适用于第 8 区的病例数,但适用于所有地区。如果您有任何建议,甚至涉及其他功能的使用,那将是很好的。谢谢

这是一个 base R 解决方案:

number <- colSums(covid_bln[3:14])
district <- names(covid_bln[3:14])
c_tot <- cbind.data.frame(district, number)
rownames(c_tot) <- NULL

# If you don't want rownames:
rownames(c_tot) <- NULL

这给了我们:

                     district number
1                       mitte  16030
2    friedrichshain_kreuzberg  10679
3                      pankow  10849
4  charlottenburg_wilmersdorf  10664
5                     spandau   9450
6         steglitz_zehlendorf   9218
7       tempelhof_schoeneberg  12624
8                   neukoelln  14922
9           treptow_koepenick   6760
10        marzahn_hellersdorf   6960
11                lichtenberg   7601
12              reinickendorf   9752

我想提供一个使用 tidyverse 的解决方案。 最终结果按地区首字母排序

  c_tot <- covid_bln %>%
    select( mitte:reinickendorf) %>% 
    gather(district, number, mitte:reinickendorf) %>% 
    group_by(district) %>% 
    summarise(number = sum(number))

结果是

# A tibble: 12 x 2
   district                   number
 * <chr>                       <int>
 1 charlottenburg_wilmersdorf  10736
 2 friedrichshain_kreuzberg    10698
 3 lichtenberg                  7644
 4 marzahn_hellersdorf          7000
 5 mitte                       16064
 6 neukoelln                   14982
 7 pankow                      10885
 8 reinickendorf                9784
 9 spandau                      9486
10 steglitz_zehlendorf          9236
11 tempelhof_schoeneberg       12656
12 treptow_koepenick            6788