R摘要不适用于不同子句

nmpmafwu  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(173)
ACCOUNT = c(M205109, M205109, M201212, M205668, M207954, M208966, M203465, M207622, M201869, M201869)
age = c(20, 20, 18, 29, 21, 19, 19, 23, 22, 22)

我使用的代码

library(tidyverse)
library(data.table)
library(dtplyr)
library(lubridate)

age_summary_all <- data %>%
  distinct(ACCOUNT) %>%
  summarise(min = min(age, na.rm=TRUE),
            q1 = quantile(age, 0.25, na.rm=TRUE),
            median = median(age,na.rm=TRUE),
            mean = mean(age,na.rm=TRUE),
            q3 = quantile(age, 0.75, na.rm=TRUE),
            max = max(age, na.rm=TRUE))

我得到这个错误:
summarise()中的错误:!计算min = min(age, na.rm = TRUE)时出现问题。由mask$eval_all_summarise()中的错误引起:!找不到对象'age'
真正奇怪的是,如果将distinct替换为引用不同列的group_by子句,则完全相同的代码可以正常运行,但我需要对唯一的个人进行分析-数据的本质是,个人帐户可能在数据表中有多个条目。因此,对于上面的示例,我希望summarise子句的n = 8。
所有的软件包都是最新的。

eaf3rand

eaf3rand1#

在这种情况下,distinct需要.keep_all=T
.keep_all:如果为“TRUE,”则保留.“data”中得所有变量.如果...“”得组合不是唯一得,则保留第一行值.
不使用.keep_all=T的呼叫

library(dplyr)

data %>%
  distinct(ACCOUNT)
# A tibble: 8 × 1
  ACCOUNT
  <chr>
1 M205109
2 M201212
3 M205668
4 M207954
5 M208966
6 M203465
7 M207622
8 M201869

使用.keep_all=T呼叫
第一次
数据

data <- structure(list(ACCOUNT = c("M205109", "M205109", "M201212", "M205668",
"M207954", "M208966", "M203465", "M207622", "M201869", "M201869"
), age = c(20, 20, 18, 29, 21, 19, 19, 23, 22, 22)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -10L))
iqjalb3h

iqjalb3h2#

我想这就是你想要达到的目标:

account <- c("M205109", "M205109", "M201212", "M205668", "M207954", "M208966", "M203465", "M207622", "M201869", "M201869")
age <- c(20, 20, 18, 29, 21, 19, 19, 23, 22, 22)

library(dplyr)    

data <- data.frame(account , age)

age_summary_all <- 
  data %>%
  group_by(account) %>%
  summarise(min = min(age, na.rm=TRUE),
            q1 = quantile(age, 0.25, na.rm=TRUE),
            median = median(age,na.rm=TRUE),
            mean = mean(age,na.rm=TRUE),
            q3 = quantile(age, 0.75, na.rm=TRUE),
            max = max(age, na.rm=TRUE))

age_summary_all

# A tibble: 8 x 7
  account   min    q1 median  mean    q3   max
  <chr>   <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>
1 M201212    18    18     18    18    18    18
2 M201869    22    22     22    22    22    22
3 M203465    19    19     19    19    19    19
4 M205109    20    20     20    20    20    20
5 M205668    29    29     29    29    29    29
6 M207622    23    23     23    23    23    23
7 M207954    21    21     21    21    21    21
8 M208966    19    19     19    19    19    19

相关问题