Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dplyr对多个帐户进行分组_R_Dplyr - Fatal编程技术网

使用dplyr对多个帐户进行分组

使用dplyr对多个帐户进行分组,r,dplyr,R,Dplyr,我有一个如下所示的数据帧: +----+---------+-----------+------------+-------------+ | | A | B | C | D | +----+---------+-----------+------------+-------------+ | 1 | 1306802 | 811-23124 | S000053152 | 29532809 | | 2 | 13068

我有一个如下所示的数据帧:

+----+---------+-----------+------------+-------------+
|    |    A    |     B     |     C      |      D      |
+----+---------+-----------+------------+-------------+
|  1 | 1306802 | 811-23124 | S000053152 |    29532809 |
|  2 | 1306802 | 811-23124 | S000057200 |   191936604 |
|  3 | 1306802 | 811-00537 | NA         |   106393284 |
|  4 | 1306802 | 811-00537 | NA         |   105092944 |
|  5 | 1306802 | 811-00537 | NA         | 10962227335 |
|  6 | 1306802 | 811-04706 | NA         | 25249641849 |
|  7 | 1306802 | 811-04706 | NA         |           0 |
|  8 | 1306802 | 811-04706 | NA         | 23510301799 |
|  9 | 1306802 | 811-04706 | NA         |  9477889899 |
| 10 | 1306802 | 811-04894 | NA         |  2847314143 |
| 11 | 1306802 | 811-04986 | NA         |           0 |
| 12 | 1306802 | 811-04986 | NA         |   107804150 |
| 13 | 1306802 | 811-04986 | NA         |   257550681 |
| 14 | 1306802 | 811-04986 | NA         |  2712807262 |
| 15 | 1306802 | 811-04986 | NA         |  2010169002 |
| 16 | 1306802 | 811-05459 | NA         | 60121770194 |
| 17 | 1306802 | 811-05583 | NA         |  1922165752 |
| 18 | 1306802 | 811-05583 | NA         |  2259339058 |
| 19 | 1306802 | 811-05583 | NA         | 57707441184 |
| 20 | 1306802 | 811-05583 | NA         | 82371244343 |
+----+---------+-----------+------------+-------------+
我需要它看起来像这样,其中A是群,B是不同值的计数,C是不同值的计数,D是和

+---+---------+---+---+--------------+
|   |    A    | B | C |      D       |
+---+---------+---+---+--------------+
| 1 | 1306802 | 7 | 2 | 281950622292 |
+---+---------+---+---+--------------+
我尝试了以下方法,但只给出了记录计数。我也尝试过使用
summary\u all
并指定列函数,但我遇到了错误

result <- data.frame %>% 
    group_by(A) %>%
    summarize(n())
结果%
组别(A)%>%
总结(n())

这可以通过
摘要
中的
dplyr
>=1.0.0跨
来完成,其中我们可以有多个列块,对不同的函数进行摘要。这里,B,C被放置在跨
内,并获得不同值的数量(
n_distinct
),同时我们得到'D'的
以及跨
外(按'A'分组后)

库(dplyr)
df1%>%
组别(A)%>%
总结(跨越(B:C,n_distinct,na.rm=TRUE),D=sum(D,na.rm=TRUE))
#一个tibble:1 x 4
#A、B、C、D
#              
#1 1306802     7     2 281950622292
数据
df1这可以通过
summary
中的
dplyr
>=1.0.0中的
cross
来完成,其中我们可以有多个列块,对不同的函数进行汇总。这里,B,C被放置在跨
内,并获得不同值的数量(
n_distinct
),同时我们得到'D'的
以及跨
外(按'A'分组后)

库(dplyr)
df1%>%
组别(A)%>%
总结(跨越(B:C,n_distinct,na.rm=TRUE),D=sum(D,na.rm=TRUE))
#一个tibble:1 x 4
#A、B、C、D
#              
#1 1306802     7     2 281950622292
数据
df1谢谢。我刚刚遇到了
n_distinct
函数。下面的
摘要
是否也这样做<代码>汇总(B=n_distinct(B,na.rm=T),C=n_distinct(C,na.rm=T),D=sum(D,na.rm=T)
你什么时候会使用
而不是本例?@mdute.是的,它也应该是一样的。感谢
na.rm
参数。我没有注意到。更新了。当你有10多列要做摘要时,我会使用
,写10次相同的函数会花费很多时间time@akrun …为什么需要跨列?@akrun。在使用自定义列名时,是否可以跨列使用
X=n_distinct(B,na.rm=T)
。还是您必须键入所有列?@MitchellGraham唯一的原因是它可以扩展为一般情况,正如一个OP所示,在使用具有更多特性的数据集时,它将更加手动。我刚刚遇到了
n\u distinct
函数。下面的
摘要
是否也这样做?
s求和(B=n_-distinct(B,na.rm=T),C=n_-distinct(C,na.rm=T),D=sum(D,na.rm=T)
你什么时候会使用
而不是本例?@mdute.是的,它也应该是一样的。感谢
na.rm
参数。我没有注意到。更新了。当你有10多列要做摘要时,我会使用
,写10次相同的函数会花费很多时间time@akrun …为什么需要跨列?@akrun。在使用自定义列名时,是否可以跨列使用
X=n_distinct(B,na.rm=T)
。或者您必须键入所有列吗?@MitchellGraham唯一的原因是,它可以扩展为一般情况,如一个OP所示,在使用具有更多功能的数据集时,将更加手动
library(dplyr)
df1 %>%
     group_by(A) %>%
     summarise(across(B:C, n_distinct, na.rm = TRUE), D = sum(D, na.rm = TRUE))
# A tibble: 1 x 4
#        A     B     C            D
#    <int> <int> <int>        <dbl>
#1 1306802     7     2 281950622292
df1 <- structure(list(A = c(1306802L, 1306802L, 1306802L, 1306802L, 
1306802L, 1306802L, 1306802L, 1306802L, 1306802L, 1306802L, 1306802L, 
1306802L, 1306802L, 1306802L, 1306802L, 1306802L, 1306802L, 1306802L, 
1306802L, 1306802L), B = c("811-23124", "811-23124", "811-00537", 
"811-00537", "811-00537", "811-04706", "811-04706", "811-04706", 
"811-04706", "811-04894", "811-04986", "811-04986", "811-04986", 
"811-04986", "811-04986", "811-05459", "811-05583", "811-05583", 
"811-05583", "811-05583"), C = c("S000053152", "S000057200", 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA), D = c(29532809, 191936604, 106393284, 105092944, 10962227335, 
25249641849, 0, 23510301799, 9477889899, 2847314143, 0, 107804150, 
257550681, 2712807262, 2010169002, 60121770194, 1922165752, 2259339058, 
57707441184, 82371244343)), class = "data.frame", row.names = c(NA, 
-20L))