r - 排列后如何正确切片?(右)
问题描述
我无法根据指定的代码进行切片。请参阅下面的可重现示例:
library(alr4)
library(tidyverse)
modelUN <- lm(fertility ~ ppgdp, data = UN11)
我想标记两个最高和最低残差。
library(broom)
UN11 <- UN11 %>% mutate(Residuals = augment(modelUN) %>% pull(.resid))
UN11 %>% arrange(Residuals) %>% slice_head(n = 2)
这并没有给我最低的残差。我尝试保存数据集(认为它是从原始 df 中获取的),但结果是一样的。我该怎么走?
解决方案
slice_head
or根据给定slice_tail
返回头行和尾行n
。如果是两端都取,我们可以用slice
带索引的( 1:2
-head,(n()-1):n()
fortail
library(dplyr)
UN11 %>%
dplyr::arrange(Residuals) %>%
dplyr::slice(c(1:2, (n()-1):n()))
或使用row_number
withhead/tail
UN11 %>%
dplyr::arrange(Residuals) %>%
dplyr::slice(c(head(row_number(), 2), tail(row_number(), 2)))
# region group fertility ppgdp lifeExpF pctUrban Residuals
#1 Europe other 1.134 4477.7 78.40 49 -1.900575
#2 Europe other 1.450 1625.8 73.48 48 -1.675868
#3 Africa africa 6.300 1237.8 50.04 36 3.161712
#4 Africa africa 6.925 357.7 55.77 17 3.758539
并使用head
UN11 %>%
arrange(Residuals) %>%
head(2)
# region group fertility ppgdp lifeExpF pctUrban Residuals
#1 Europe other 1.134 4477.7 78.40 49 -1.900575
#2 Europe other 1.450 1625.8 73.48 48 -1.675868
或者另一种选择是slice_min/slice_max
将它们绑定在一起bind_rows
(但它比中的索引选项效率低且不直接slice
)
UN11 %>%
slice_min(Residuals, n = 2) %>%
bind_rows(UN11 %>%
slice_max(Residuals, n = 2))
推荐阅读
- typescript - 未实现函数重载
- .net - 使用ajax将@Model从视图发送到控制器
- django - 在没有 Rest Framework 的情况下在 Django 中创建 API 是否安全?
- amazon-web-services - 在 AWS ApiGateway 中更改响应“授权标头中不是有效的键 = 值对(缺少等号)”
- javascript - Express.js req.body 未定义
- c++ - 将算法应用于投影,但从原始容器中检索信息
- python - Twisted Producer 从未取消注册
- python - SQLite - 将行组合成新列
- python - 在 Python 中将字符串列添加到 txt 文件
- r - 在 R 中创建具有描述性统计信息的表