R语言 汇总列中的值,如果包含某些字符,则为基数

hjzp0vay  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(139)

我有一个数据集:

Gemeinde <- c("Adliswil", "Adliswil", "Adliswil", "Adliswil", "Adliswil","Adlikon", "Adlikon", "Adlikon", "Adlikon", "Adlikon")
Country <- c("Schweiz", "Deutschland", "Frankreich", "Türkei", "China","Schweiz", "Deutschland", "Frankreich", "Türkei", "China")
Count <- c(23, 41, 32, 58, 26,23, 41, 32, 58, 26)
df <- data.frame(Gemeinde, Country, Count)
print (df)

我需要总结数据集的基础上,如果国家的人来自瑞士或不是。所以分组的Gemeinde,不同的,如果国家是瑞士或不是,然后得到的总和Gemeinde -瑞士或不是。
我尝试了:

country_count <- country_count %>%
  group_by(Gemeinde) %>%
  summarize(sumSwiss = sum(Anzahl[Staatsangehörigkeit== "Frankreich & Deutschland & Schweiz"]),
            sumForeigners = sum(Anzahl))

所有国家
“德意志、德国和瑞士”
应该成为瑞士人,其余的都应该是“外国人”。
"我所需要的"

Gemeinde <- c("Adliswil", "Adlikon")
sumSwiss <- 96
sumForeign <- 84

df <- data.frame(Gemeinde, sumSwiss, sumForeign)

print (df)
yhxst69z

yhxst69z1#

library(tidyverse) 

df %>%
  mutate(Country = case_when(
    Country %in% c("Frankreich", "Deutschland", "Schweiz") ~ "Swiss",
    TRUE ~ "Foreign"
  )) %>%
  group_by(Gemeinde, Country) %>%
  summarise(sum = sum(Count)) %>%
  pivot_wider(names_from = "Country",
              values_from = "sum",
              names_prefix = "sum")

# A tibble: 2 × 3
# Groups:   Gemeinde [2]
  Gemeinde sumForeign sumSwiss
  <chr>         <dbl>    <dbl>
1 Adlikon          84       96
2 Adliswil         84       96

相关问题