gpt4 book ai didi

r - 计算唯一组组合中的出现次数

转载 作者:行者123 更新时间:2023-12-01 08:28:18 25 4
gpt4 key购买 nike

我有一个类似于以下的数据集:

SSN Auto    MtgHe   Personal    Other   None
A 1 1 0 0 0
B 1 1 0 0 0
C 1 0 0 0 0
D 1 0 1 1 0
E 0 0 0 0 1
F 0 0 0 0 1
G 0 0 0 0 1

SSN 是个人,Auto、MtgHe、Personal、Other 是贷款类别,“无”表示不存在贷款。总共有 15 种独特的可能贷款组合加上 1 种其他可能的“无”,表示不存在贷款。因此,例如,一个人可能只有汽车贷款,或汽车和个人贷款,或者根本没有贷款。我想要一些具有不同组合的 SSN。使用上表,结果如下所示:
Cnt Auto    MtgHe   Personal    Other   None
2 1 1 0 0 0
1 1 0 0 0 0
1 1 0 1 1 0
3 0 0 0 0 1

关于如何在 R 中实现这一点的任何想法?我的数据集确实有数万个案例,但任何帮助将不胜感激。

最佳答案

和强制性data.table版本(唯一不会对数据集重新排序的版本)

library(data.table)
setDT(df)[, .(Cnt = .N), .(Auto, MtgHe, Personal, Other, None)]
# Auto MtgHe Personal Other None Cnt
# 1: 1 1 0 0 0 2
# 2: 1 0 0 0 0 1
# 3: 1 0 1 1 0 1
# 4: 0 0 0 0 1 3

或者更短的版本可能是
temp <- names(df)[-1]
setDT(df)[, .N, temp]
# Auto MtgHe Personal Other None N
# 1: 1 1 0 0 0 2
# 2: 1 0 0 0 0 1
# 3: 1 0 1 1 0 1
# 4: 0 0 0 0 1 3

只是为了好玩,这是另一个(无序的)基础 R 版本
Cnt <- rev(tapply(df[,1], do.call(paste, df[-1]), length))
cbind(unique(df[-1]), Cnt)
# Auto MtgHe Personal Other None Cnt
# 1 1 1 0 0 0 2
# 3 1 0 0 0 0 1
# 4 1 0 1 1 0 1
# 5 0 0 0 0 1 3

还有一个 dplyr完整版
library(dplyr)
group_by(df, Auto, MtgHe, Personal, Other, None) %>% tally
# Source: local data frame [4 x 6]
# Groups: Auto, MtgHe, Personal, Other
#
# Auto MtgHe Personal Other None n
# 1 0 0 0 0 1 3
# 2 1 0 0 0 0 1
# 3 1 0 1 1 0 1
# 4 1 1 0 0 0 2

关于r - 计算唯一组组合中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com