gpt4 book ai didi

r - data.table或dplyr-数据操作

转载 作者:行者123 更新时间:2023-12-04 11:53:14 24 4
gpt4 key购买 nike

我有以下数据

Date           Col1       Col2
2014-01-01 123 12
2014-01-01 123 21
2014-01-01 124 32
2014-01-01 125 32
2014-01-02 123 34
2014-01-02 126 24
2014-01-02 127 23
2014-01-03 521 21
2014-01-03 123 13
2014-01-03 126 15

现在,我想为每个日期计算 Col1中的唯一值(在上一个日期中没有重复),然后将其添加到上一个计数中。例如,
Date           Count
2014-01-01 3 i.e. 123,124,125
2014-01-02 5 (2 + above 3) i.e. 126, 127
2014-01-03 6 (1 + above 5) i.e. 521 only

最佳答案

library(dplyr)
df %.%
arrange(Date) %.%
filter(!duplicated(Col1)) %.%
group_by(Date) %.%
summarise(Count=n()) %.% # n() <=> length(Date)
mutate(Count = cumsum(Count))
# Source: local data frame [3 x 2]
#
# Date Count
# 1 2014-01-01 3
# 2 2014-01-02 5
# 3 2014-01-03 6

library(data.table)
dt <- data.table(df, key="Date")
dt <- unique(dt, by="Col1")
(dt <- dt[, list(Count=.N), by=Date][, Count:=cumsum(Count)])
# Date Count
# 1: 2014-01-01 3
# 2: 2014-01-02 5
# 3: 2014-01-03 6

或者
dt <- data.table(df, key="Date")
dt <- unique(dt, by="Col1")
dt[, .N, by=Date][, Count:=cumsum(N)]

为了在这样的链接操作中方便起见, .N自动命名为 N(无点),因此,如果需要,可以在下一个操作中将 .NN一起使用。

关于r - data.table或dplyr-数据操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21416918/

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