gpt4 book ai didi

r - 按最多每日记录数对数据框进行子集

转载 作者:行者123 更新时间:2023-12-01 08:09:59 26 4
gpt4 key购买 nike

我正在处理一个大型数据集,下面显示了一个示例。对于我必须处理的大多数单个文件,应该有超过一天的数据。

Date <- c("05/12/2012 05:00:00", "05/12/2012 06:00:00", "05/12/2012 07:00:00",
"05/12/2012 08:00:00", "06/12/2012 07:00:00", "06/12/2012 08:00:00",
"07/12/2012 05:00:00", "07/12/2012 06:00:00", "07/12/2012 07:00:00",
"07/12/2012 08:00:00")
Date <- strptime(Date, "%d/%m/%Y %H:%M")
c <- c("0","1","5","4","6","8","0","3","10","6")
c <- as.numeric(c)
df1 <- data.frame(Date,c,stringsAsFactors = FALSE)

我希望只在一天内留下数据。将根据当天的数据点数量选择这一天。如果由于任何原因将两天联系在一起(数据点数最多),我希望选择记录的最高个人值的那一天。

在上面给出的示例数据框中,我将剩下 12 月 7 日。它有 4 个数据点(与 12 月 5 日一样),但它具有这两天中记录的最高值(即 10)。

最佳答案

这是 tapply 的解决方案.

# count rows per day and find maximum c value
res <- with(df1, tapply(c, as.Date(Date), function(x) c(length(x), max(x))))

# order these two values in decreasing order and find the associated day
# (at top position):
maxDate <- names(res)[order(sapply(res, "[", 1),
sapply(res, "[", 2), decreasing = TRUE)[1]]

# subset data frame:
subset(df1, as.character(as.Date(Date)) %in% maxDate)

Date c
7 2012-12-07 05:00:00 0
8 2012-12-07 06:00:00 3
9 2012-12-07 07:00:00 10
10 2012-12-07 08:00:00 6

关于r - 按最多每日记录数对数据框进行子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812618/

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