Package dplyr version 1.1.4
Parameters
relocate(.data, ..., .before = NULL, .after = NULL)
参数【.data】:数据集、数据集扩展(如 tibble)或 lazy data frames(如来自 dbplyr 或 dtplyr 的数据集)。
参数【...】:<tidy-select> 要移动的列。
参数【.before,.after】:<tidy-select> 通过参数【...】选择的列的目的地。两者都不提供会将列移动到左侧;同时指定两者则会出错。
Value
与参数【.data】类型相同的对象。输出具有以下属性:
- 行不会受到影响。
- 输出中会出现相同的列,但(通常)位置不同,可能还会重命名。
- 数据集属性保留不变。
- 分组不受影响。
Examples
1. relocate() 默认将列放到首列
df <- tibble(a = 1, b = 1, c = 1, d = "a", e = "a", f = "a")
df
# A tibble: 1 × 6
a b c d e f
<dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 1 1 a a a
df %>% relocate(f)
# A tibble: 1 × 6
f a b c d e
<chr> <dbl> <dbl> <dbl> <chr> <chr>
1 a 1 1 1 a a
2. relocate() 的参数【.after】将列放到该列后面
df <- tibble(a = 1, b = 1, c = 1, d = "a", e = "a", f = "a")
df
# A tibble: 1 × 6
a b c d e f
<dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 1 1 a a a
df %>% relocate(a, .after = c)
# A tibble: 1 × 6
b c a d e f
<dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 1 1 a a a
df %>% relocate(a, .after = last_col())
# A tibble: 1 × 6
b c d e f a
<dbl> <dbl> <chr> <chr> <chr> <dbl>
1 1 1 a a a 1
3. relocate() 的参数【.before】将列放到该列前面
df <- tibble(a = 1, b = 1, c = 1, d = "a", e = "a", f = "a")
df
# A tibble: 1 × 6
a b c d e f
<dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 1 1 a a a
df %>% relocate(f, .before = b)
# A tibble: 1 × 6
a f b c d e
<dbl> <chr> <dbl> <dbl> <chr> <chr>
1 1 a 1 1 a a
4. relocate() 在改变列的位置的同时,还可以重命名列名
df <- tibble(a = 1, b = 1, c = 1, d = "a", e = "a", f = "a")
df
# A tibble: 1 × 6
a b c d e f
<dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 1 1 a a a
df %>% relocate(ff = f)
# A tibble: 1 × 6
ff a b c d e
<chr> <dbl> <dbl> <dbl> <chr> <chr>
1 a 1 1 1 a a
5. relocate() 通过变量的类型选择列
df <- tibble(a = 1, b = 1, c = 1, d = "a", e = "a", f = "a")
df
# A tibble: 1 × 6
a b c d e f
<dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 1 1 a a a
df %>% relocate(where(is.character))
# A tibble: 1 × 6
d e f a b c
<chr> <chr> <chr> <dbl> <dbl> <dbl>
1 a a a 1 1 1
df %>% relocate(where(is.numeric), .after = last_col())
# A tibble: 1 × 6
d e f a b c
<chr> <chr> <chr> <dbl> <dbl> <dbl>
1 a a a 1 1 1
6. relocate() 通过其他的选择方法挑选列
df <- tibble(a = 1, b = 1, c = 1, d = "a", e = "a", f = "a")
df
# A tibble: 1 × 6
a b c d e f
<dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 1 1 a a a
df %>% relocate(any_of(c("a", "e", "i", "o", "u")))
# A tibble: 1 × 6
a e b c d f
<dbl> <chr> <dbl> <dbl> <chr> <chr>
1 1 a 1 1 a a
7. 在调动多列的同时使用了参数【.after,.before】,列会立即排在选择列的前/后
df2 <- tibble(a = 1, b = "a", c = 1, d = "a")
df2
# A tibble: 1 × 4
a b c d
<dbl> <chr> <dbl> <chr>
1 1 a 1 a
df2 %>% relocate(where(is.numeric), .after = where(is.character))
# A tibble: 1 × 4
b d a c
<chr> <chr> <dbl> <dbl>
1 a a 1 1
df2 %>% relocate(where(is.numeric), .before = where(is.character))
# A tibble: 1 × 4
a c b d
<dbl> <dbl> <chr> <chr>
1 1 1 a a