排列后如何正确切片?(R)
我无法根据指定的代码进行切片。请参见下面的可复制示例:排列后如何正确切片?(R),r,dplyr,R,Dplyr,我无法根据指定的代码进行切片。请参见下面的可复制示例: library(alr4) library(tidyverse) modelUN <- lm(fertility ~ ppgdp, data = UN11) 库(alr4) 图书馆(tidyverse) 模型运行%pull(.resid)) UN11%%>%排列(残差)%%>%切片头(n=2) 这并没有给我最低的残差。我试图保存数据集(认为它是从原始df获取的),但结果是一样的。我应该如何继续?切片头或切片尾根据给定的n返回头行
library(alr4)
library(tidyverse)
modelUN <- lm(fertility ~ ppgdp, data = UN11)
库(alr4)
图书馆(tidyverse)
模型运行%pull(.resid))
UN11%%>%排列(残差)%%>%切片头(n=2)
这并没有给我最低的残差。我试图保存数据集(认为它是从原始df获取的),但结果是一样的。我应该如何继续?切片头或切片尾根据给定的
n
返回头行和尾行。如果要得到两端,我们可以使用带有索引的slice
(1:2
-head)和(n()-1):n()
作为尾部
library(dplyr)
UN11 %>%
dplyr::arrange(Residuals) %>%
dplyr::slice(c(1:2, (n()-1):n()))
或者将
行号
与头/尾
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\u min/slice\u max
,并将它们与bind\u行
绑定在一起(但它比slice
中的索引选项效率更低,更不直接)
为清晰和正确而编辑。太好了!我的问题是切片没有根据排列函数给出前两行。@AmoghJoshi您想按“区域”、“组”分组吗“,?如果您运行此代码,如果按排列筛选,则前两行的剩余值为-1.90。但是,切片代码给出的第一个和最后一个值不正确。代码获取的前两个值分别为:-0.79和0.48(最后一行)@AmoghJoshi我得到了
-1.900575
和-1.675868
作为排列的第一行和第二行
好的,这很有效!我想你是对的!谢谢!
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
UN11 %>%
slice_min(Residuals, n = 2) %>%
bind_rows(UN11 %>%
slice_max(Residuals, n = 2))