0

我想制作一个交叉表,其中 x 是变量的不同 obs 的数量,y 是另一个变量。使用 dplyr,我可以通过下面的代码获得所需的信息,但它显然不会创建表格。我想要的是secteur的CODE_UAI.x 的不同 obs 的数量。下面是数据集的一个例子。

CODE_UAI.x 教派
0271564D 1
0942344M 2
0271564D 3
0332894S 3
0033082C 2
00381324H 1
0271564D 3
0033082C 2
  • 输入代码dataframe
df1 <- data.frame("CODE_UAI.x" = c("0271564D", "0942344M", "0271564D", "0332894S",
                                   "0033082C", "00381324H", "0271564D", "0033082C"),
                  secteur = c(1, 2, 3, 3, 2, 1, 3, 2))
Ech_final_nom_BSA %>%
  filter(secteur == 3) %>%
  summarise(n=n_distinct(CODE_UAI.x))

我也试过用包 summarytools 来做这个,但没有结果。

我期待的结果是这样的:

教派 # 不同的 UAI
1 2
2 2
3 2

我希望这是有道理的。如果需要,请随时询问更多信息。

4

1 回答 1

0

而不是使用filter,您可以改为使用group_byfor eachsecteur并计算唯一值n_distinct

library(dplyr)
df1 %>% group_by(secteur) %>% summarise(n=n_distinct(CODE_UAI.x))

#  secteur     n
#    <dbl> <int>
#1       1     2
#2       2     2
#3       3     2

或以 R 为基数 -

aggregate(CODE_UAI.x~ secteur, df1, function(x) length(unique(x)))
于 2021-10-27T02:05:01.397 回答