R语言 如何获得家庭中的人数?和语言同质的家庭

cld4siwp  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(131)

有一个数据框,我必须得到家庭中的人数以及语言同质的家庭?

df <- data.frame(
        Village = c(rep("1", "30")),
        Number = c(33,  33, 33, 33, 33, 33, 33, 1,  1,  30, 30, 30, 30, 30, 30, 30,
                   31,  31, 31, 31, 36, 36, 36, 36, 62, 62, 62, 62, 69, 69),
        Number_1 = c(183,   183,    183,    183,    183,    183,    183,    151,    151,    255,    255,    255,    255,    255,    255,
                     255,   31, 31, 31, 31, 111,    111,    111, 111, 287, 287, 287,287, 219, 219),
        Number_3 = c(137,   137,    137,    137,    137,    137,    137,    113,    113,    191,    191,    191,    191,    191,    191,
                     191,   23, 23, 23, 23, 83, 83, 83, 83, 215, 215, 215, 215, 164, 164),
        PERSNUM = c(1,  2,  3,  4,  5,  6,  7,  1,  2,  3,  1,  2,  3,  4,  5,  6,
                    1,  2,  3,  1,  2,  3,  4, 5,  1, 2, 3, 4, 1, 2),
        DAILY_LANG = c(33,  33, 33, 33, 33, 33, 33, 1,  1,  1,  1,  1,  1,  0,  11,
                       11,  11, 11, 11, 11, 0,  0,  11, 11, 11, 11, 11, 11, 11, 11))

有多少家庭使用一种语言?DAILY_LANG变量为语言代码。我需要找到有多少家庭说一种语言,有多少人说两种语言。
注:本题如何得到住户人数?回答。只需要找到语言同质的家庭?
非常感谢你的回答

knsnq2tg

knsnq2tg1#

按列分组,检查最大PERSNUM是3还是4:

library(dplyr)

df %>% 
  group_by(Village, Number, Number_1, Number_3) %>% 
  filter(max(PERSNUM) %in% c(3, 4))
# A tibble: 8 × 5
# Groups:   Village, Number, Number_1, Number_3 [2]
#   Village Number Number_1 Number_3 PERSNUM
#   <chr>    <dbl>    <dbl>    <dbl>   <dbl>
# 1 1           31       31       23       1
# 2 1           31       31       23       2
# 3 1           31       31       23       3
# 4 1           31       31       23       1
# 5 1           62      287      215       1
# 6 1           62      287      215       2
# 7 1           62      287      215       3
# 8 1           62      287      215       4

看看他们是否会说1或2种语言:

df %>% 
  group_by(Village, Number, Number_1, Number_3) %>% 
  filter(length(unique(DAILY_LANG)) %in% c(1, 2))
cgvd09ve

cgvd09ve2#

不清楚要计算哪一列。但这里有一个对你的问题的一般答案:

library(tidyverse)

df <- data.frame(
  foo = c(rep("a",5), rep("b", 5)),
  bar = c(1,1,1,3,3,1,1,3,3,3)
)

print(df)
#>    foo bar
#> 1    a   1
#> 2    a   1
#> 3    a   1
#> 4    a   3
#> 5    a   3
#> 6    b   1
#> 7    b   1
#> 8    b   3
#> 9    b   3
#> 10   b   3

result <- df %>%
  group_by(foo) %>%
  summarise(count = sum(bar == 3))

print(result)
#> # A tibble: 2 × 2
#>   foo   count
#>   <chr> <int>
#> 1 a         2
#> 2 b         3

创建于2023-05-15带有reprex v2.0.2

相关问题