【发布时间】:2017-11-01 21:36:04
【问题描述】:
以下是我想要通过更新记录的最新更改并采用 SUB_NO 和 LOAN 列的 groupby 来合并的数据。
SUB_NO ON_DATE ST_DATE ND_DATE N_SEQ_NO E_SEQ_NO N_CODE ACTV_AMT L_SEQ_NO FEATURE_CODE LOAN
123 7/19/17 6/18/17 7/17/17 916 16 O 15.63 153 INSTALLMENT 152
123 8/21/17 7/18/17 8/17/17 916 16 O 15.63 154 INSTALLMENT 152
124 6/20/17 5/18/17 6/17/17 916 17 O 15.63 152 OTHER 153
预期输出:
SUB_NO ON_DATE ST_DATE ND_DATE N_SEQ_NO E_SEQ_NO N_CODE ACTV_AMT L_SEQ_NO FEATURE_CODE LOAN COUNT
123 8/21/17 6/18/17 8/17/17 916 16 O 15.63 154 INSTALLMENT 152 2
124 6/20/17 5/18/17 6/17/17 916 17 O 15.63 152 OTHER 153 0
library(dplyr)
df1 <- df %>%
filter(FEATURE_CODE == "INSTALLMENT") %>%
group_by(SUB_NO,LOAN) %>%
slice(which.max(as.Date(ON_DATE, '%m/%d/%Y'))) %>%
slice(which.max(as.Date(ND_DATE, '%m/%d/%Y'))) %>%
slice(which.max(L_SEQ_NO)) %>%
summarize(COUNT = n())
我得到的输出是:
LOAN COUNT
152 2
谁能帮我获得所需的输出?
我的主要目标是针对每个 SUB_NO,它由涉及 INSTALLMENT 的具有不同 FEATURE_CODE 的多个事务组成。我想确定 INSTALLMENT 事务的计数并将数据合并到 1 条记录中,其中 INSTALLMENT 特征代码具有初始开始日期和最近的更新日期。
【问题讨论】:
-
首先:如果您过滤
FEATURE_CODE == "INSTALLMENT",您将不会在输出中获得SUB_NO= 124(其中FEATURE_CODE=OTHER)的行。 -
@neilfws 我不担心安装以外的记录。如果它们保持原样并在计数列中填充 NA 就可以了。
-
也不清楚为什么第二个计数应该是0。不应该是1吗?
-
去掉
filter这一行,因为你想保留你的OTHER特征码。如果您希望摘要仅计算INSTALLMENT功能代码,而不是COUNT = n(),请使用COUNT = sum(FEATURE_CODE == INSTALLMENT)。 -
您可以随时在
sum()中添加na.rm = T。