获取一列中重复次数最多的项目及其在另一列中的关联值[关闭]

Posted

技术标签:

【中文标题】获取一列中重复次数最多的项目及其在另一列中的关联值[关闭]【英文标题】:Get the most repeated items in one column and its associated value in another column [closed] 【发布时间】:2022-01-02 01:39:25 【问题描述】:

我的原始数据集(cyclistic_data)有 3 列:station namestation_latstation_lng。这是我的数据集的预览。Preview of data set

station_coordinates <- 
   data.frame(
     station = c(Dearborn St, Franklin St, Lake Shore Dr, Dearborn St, 
                 Dearborn St,  Franklin St),
     station_lat = c(-87.6291273333333, -87.6353428333333, 
                     41.8809828333333, -87.6291273333333, 
                    -87.6291273333333, -87.6353428333333),
     station_lng = c(41.8944341666667, 41.900675, 41.8720545, 
                     41.8944341666667, 41.8944341666667, 41.900675) 
   )              

我试过了

sort(table(cyclistic_data$start_station),decreasing=TRUE)[1:100]

获取重复次数最多的 100 个电台名称的代码。通过使用此代码,我确定了前 100 个站点,但我无法从原始数据 det 中提取相应的 lan 和 lng 值。我想从原始数据集中检索重复次数最多的 100 个站点名称及其 lat 和 lng 值。

【问题讨论】:

欢迎来到 ***!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。 【参考方案1】:

如果没有可重复的例子,给出一个精确的解决方案有点困难,但如果我理解正确,你可以试试:

使用 add_count() 向数据框中添加一列,我们将在此处将其命名为“station_n”。 slice_max(n = 100, order_by = station_n) 根据我们的计数,这将占据前 100 个站点。
data %%>
    add_count(station, name = "station_n")%>%
    slice_max(n = 100, order_by = station_n) 

根据经度和纬度进行绘图是一个稍微不同的问题,并且将取决于您要如何绘图,但您可以查看 maps() 包和 geom_sf() 作为启动器

在您发表评论后,我知道的最简单的方法是使用联接。可能有更好/更快的选择:

#Making a minimally complex example: 
data <- data.frame(station = c("one", "one", "two", "one", "three", "three"),
                     lat = c(18938, 18938, 18273, 18938, 199999, 199999))

top <- data %>%
  count(station, sort = TRUE)%>%
  slice_max(n = 2, order_by = n)

data %>%
  inner_join(top)

我们可以把它变成这样的函数:

keeping_top_n <- function(x, top_n = 100, var_of_interest = station)
  top <- x %>%
    count(var_of_interest, sort = TRUE)%>%
    slice_max(n = top_n, order_by = n)
  
  x %>%
    inner_join(top)


#you would call this like:

keeping_top_n(data_frame)

【讨论】:

我需要获取站点列中最常用站点的 100 个名称以及前 100 个列表中每个站点对应的 lat 和 lng 值。 Oki,已经编辑了答案 - 对我来说很好,如果您有任何问题,请制作一个可重现的示例 :) 成功了。感谢您的协助。我不得不像这样更改代码以获得所需的结果。顶部 % count(end_station, sort = TRUE)%>% head(arrange(desc(n)), n = 100)

以上是关于获取一列中重复次数最多的项目及其在另一列中的关联值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas,对于一列中的每个唯一值,在另一列中获取唯一值

如何使用实体框架中的 DBContext 获取在另一列中具有重复数据的所有 ID?

在另一列中使用一列中的值

Excel:如果在另一列中发现重复的单元格值,则突出显示绿色

在另一列上查找最近的时间戳并在新列中添加值 PySpark

SQL - 为给定列中的值获取另一列的值