gpt4 book ai didi

r 如何获取重复值的总数

转载 作者:行者123 更新时间:2023-12-05 09:23:07 25 4
gpt4 key购买 nike

我有一个包含 person_id、study_id 列的数据框,如下所示:

 person_id    study_id    
10 1
11 2
10 3
10 4
11 5

我想计算 1 项研究或 2 项研究的人数(按 person_id 唯一) - 所以不是那些对 study_id 有特殊值(value)的人,但是:

  • 2 人进行 1 项研究
  • 3 人进行 2 项研究
  • 1 人有 3 项研究
  • 等等

我该怎么做?我想也许是一个循环计数,但我想知道是否有一个包可以让它更容易?

最佳答案

为了获得更符合您预期输出的示例数据集,我将使用它

dd <- data.frame(
person_id = c(10, 11, 15, 12, 10, 13, 10, 11, 12, 14, 15),
study_id = 1:11
)

现在我可以计算有多少人进行了给定的研究。

table(rowSums(with(dd, table(person_id, study_id))>0))

# 1 2 3
# 2 3 1

顶线是研究的数量,底线是进行该研究的人数。

这是可行的,因为

with(dd, table(person_id, study_id))

返回

         study_id
person_id 1 2 3 4 5 6 7 8 9 10 11
10 1 0 0 0 1 0 1 0 0 0 0
11 0 1 0 0 0 0 0 1 0 0 0
12 0 0 0 1 0 0 0 0 1 0 0
13 0 0 0 0 0 1 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 1 0
15 0 0 1 0 0 0 0 0 0 0 1

然后我们使用 >0rowSums 来计算每个人的独特研究。然后我们再次使用table来总结结果。

为你的数据建表占用内存太多,你可以试试

table(with(dd, tapply(study_id, person_id, function(x) length(unique(x)))))

这是一种略有不同的方式来获得相同的东西。

关于r 如何获取重复值的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24166554/

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