gpt4 book ai didi

r - 计算从数据帧的上一组中添加和删除的新元素

转载 作者:行者123 更新时间:2023-12-03 13:56:29 28 4
gpt4 key购买 nike

我有一个数据框

df <- data.frame(
"Quarter" = c("Q1 2019","Q1 2019","Q1 2019","Q2 2019","Q2 2019","Q2 2019","Q2 2019","Q3 2019","Q3 2019","Q3 2019","Q3 2019","Q4 2019","Q4 2019"),
"Name" = c("Ram","John","Jack","Ram","Rach","Will","John","Ram","Rach","Will","John","Rach","John"),
stringsAsFactors = FALSE
)
我需要通过与上一季度的比较来计算每个季度添加和离开的人数。
预期的输出是
quarterYear status Count
1 Q1 2019 Added 3
2 Q1 2019 Left 0
3 Q2 2019 Added 2
4 Q2 2019 Left 1
5 Q3 2019 Added 0
6 Q3 2019 Left 0
7 Q4 2019 Added 0
8 Q4 2019 Left 2
我不确定如何比较两组并获得计数。
如何在 R 中实现预期输出?

最佳答案

不确定速度影响,但其中很大一部分本质上是比较连续计数,因此 diff想到了。

tab <- table(df$Quarter, df$Name)
tab <- rbind(tab[1,,drop=FALSE], diff(tab))
out <- rbind(added = rowSums(tab == 1), left = rowSums(tab == -1))

# Q1 2019 Q2 2019 Q3 2019 Q4 2019
#added 3 2 0 0
#left 0 1 0 2
如果您特别需要长输出:
setNames(data.frame(as.table(out)), c("status","quarter","count"))
# status quarter count
#1 added Q1 2019 3
#2 left Q1 2019 0
#3 added Q2 2019 2
#4 left Q2 2019 1
#5 added Q3 2019 0
#6 left Q3 2019 0
#7 added Q4 2019 0
#8 left Q4 2019 2

关于r - 计算从数据帧的上一组中添加和删除的新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62870616/

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