gpt4 book ai didi

r - 如何将 pivot_longer 与 name_pattern 一起使用

转载 作者:行者123 更新时间:2023-12-05 01:22:57 34 4
gpt4 key购买 nike

我希望在下面的小标题中使用更长时间。

我想用 3 列创建 tibble

  1. 第 1 列 - 名称 - alpha - 包含 ab
  2. 第 2 列 - 名称 - beta - 包含 XY
  3. 第 3 列 - 名称 - P - 包含值
library(tidyverse)

tbl <- tibble(b_X_P = runif(10),
b_Y_P = runif(10),
a_X_P = runif(10),
a_Y_P = runif(10))

最佳答案

在这里,我们可以只使用 names_sep 作为 _ 将作为列名应该拆分的分隔符。此外,将 names_to 指定为 3 个元素的向量,即 alphabeta(作为列名称前缀部分的列名称,以及.value 用于列中的值部分)

library(tidyr)
pivot_longer(tbl, cols = everything(),
names_to = c("alpha", "beta", ".value"), names_sep = "_")

-输出

# A tibble: 40 × 3
alpha beta P
<chr> <chr> <dbl>
1 b X 0.271
2 b Y 0.461
3 a X 0.546
4 a Y 0.344
5 b X 0.234
6 b Y 0.00462
7 a X 0.0157
8 a Y 0.384
9 b X 0.309
10 b Y 0.628
# … with 30 more rows

如果我们需要names_pattern,它应该是一个模式,应该包含在() 中以捕获那些字符

pivot_longer(tbl, cols = everything(),
names_to = c("alpha", "beta", ".value"),
names_pattern = "^([^_]+)_([^_]+)_(.*)")
# A tibble: 40 × 3
alpha beta P
<chr> <chr> <dbl>
1 b X 0.271
2 b Y 0.461
3 a X 0.546
4 a Y 0.344
5 b X 0.234
6 b Y 0.00462
7 a X 0.0157
8 a Y 0.384
9 b X 0.309
10 b Y 0.628
# … with 30 more rows

关于r - 如何将 pivot_longer 与 name_pattern 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73142885/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com