gpt4 book ai didi

R 从数据帧 : by date with repeated factors 中选择

转载 作者:行者123 更新时间:2023-12-03 20:38:55 24 4
gpt4 key购买 nike

我有一个地址和销售日期的数据框。一些地址有多个条目。我想要一个新的数据框,每个地址只有一次,并且要在最近的日期之前选择该地址。这是数据框的片段。

df <-structure(list(address = c("2", "316", "647", "6904", "# 5 BENT TREE DR", "# 62 62000 E 440 PL", "# 7 BENT TREE DR", "#1 ARROWHEAD RD", "#1 ECHO DR", "#1 JACKS HIDEAWAY", "#1 JACKS HIDEAWAY", "#1 MARINA DR", "#1 WHITE CHAPEL", "#10 JACKS HIDEAWAY", "#10 PRIVATEER", "#10 SUMMERSIDE", "#102 THE MOORS", "#103 MOORS VIEW", "#108 THE MOORS", "#111 THE MOORS", "#112 THE MOORS", "#116 THE MOORS", "#12 DOGWOOD HOLLOW", "#12 MAINSTAY", "#120 THE MOORS", "#13 DOGWOOD HOLLOW", "#13 MEGHAN COVES", "#14 BEACON HILL", "#14 GRAND JEST", "#14 GRAND JEST"), sold = structure(c(13521, 11373, 13413, 14372, 15044, 14056, 15044, 12712, 12671, 12524, 11071, 11856, 11670, 11754, 12251, 11829, 11465, 12600, 11271, 11624, 11831, 11276, 12724, 14040, 11100, 12678, 12174, 12293, 14546, 11430), class = "Date")), .Names = c("address", "sold"), class = "data.frame", row.names = c(NA, 30L))
df

例如,如果

address       date
123 Main St 2002-03-01
123 Main St 2005-01-01

我只想要新数据框中 123 Main St 的 2005 年日期线。

我尝试了 dplyr 的一些功能

library(plyr)
library(dplyr)

> df %>% group_by(address) %>% max(df$sold)
Error in FUN(X[[i]], ...) :
only defined on a data frame with all numeric variables
> df %>% group_by(address) %>% max(as.numeric(.(sold)))
Error in function_list[[k]](value) :
(list) object cannot be coerced to type 'double'

> ddply(df, .(address), max(.(sold)))
Error in max(.(sold)) : invalid 'type' (list) of argument

我不知道从这里该做什么,如果能提供一种选择新数据框的方法,我将不胜感激。

最佳答案

我们可以按降序排列 'sold' 列,并在按 'address' 分组后使用 slice 选择第一个观察值。

library(dplyr)
df %>%
group_by(address) %>%
arrange(desc(sold)) %>%
slice(1)

或者获取'sold'最大值的索引(which.sold)并在我们按'address'分组后使用slice获取该行

df %>%
group_by(address) %>%
slice(which.max(sold))

或者另一种选择是使用 top_n

df %>%
group_by(address) %>%
top_n(1)

或者如果我们正在使用 data.table,我们将 'data.frame' 转换为 'data.table' (setDT(df)),命令 ' sold' 降序排列,并使用 uniqueby 选项为每个“地址”选择第一个观察值。

library(data.table)
unique(setDT(df)[order(-sold)], by = 'address')

关于R 从数据帧 : by date with repeated factors 中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206978/

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