获取一列中重复次数最多的项目及其在另一列中的关联值
Get the most repeated items in one column and its associated value in another column
我的原始数据集 (cyclistic_data) 有 3 列:station name
、station_lat
和 station_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 个站点,但我无法从原始数据中提取相应的 lan 和 lng 值 det.I 想要从原始数据集中检索最重复的 100 个站点名称及其 lat 和 lng 值。
如果没有可重现的例子,很难给出一个精确的解决方案,但如果我理解正确,你可以试试:
- 使用 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() 作为初学者
根据您的评论,我知道最简单的方法是使用联接。很可能有一个 better/quicker 选项:
#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)
我的原始数据集 (cyclistic_data) 有 3 列:station name
、station_lat
和 station_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 个站点,但我无法从原始数据中提取相应的 lan 和 lng 值 det.I 想要从原始数据集中检索最重复的 100 个站点名称及其 lat 和 lng 值。
如果没有可重现的例子,很难给出一个精确的解决方案,但如果我理解正确,你可以试试:
- 使用 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() 作为初学者
根据您的评论,我知道最简单的方法是使用联接。很可能有一个 better/quicker 选项:
#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)