gpt4 book ai didi

r - names_to '.value' 约定如何适用于pivot_longer 中每行的多个观察值?

转载 作者:行者123 更新时间:2023-12-04 10:09:50 25 4
gpt4 key购买 nike

最近的一个 SO 答案,无耻地复制,使用 dplyr::pivot_longer 将 6 个变量处理为三个。

我可以理解除 names to 之外的所有 pivot_longer 参数的逻辑。 '.values'输入。

我可以弄清楚它的作用:它根据 names_pattern 中第一个括号内的正则表达式创建新的变量名称。争论。

我的问题是“.values”是如何工作的?

我可以看到它用于“每行多个观察”的 pivot_longer 函数示例部分;但示例中没有给出任何解释。

感觉好像它可能是一个正则表达式选项 .表示匹配除\n 之外的任何字符;或者它是一种“代词”类型的输出,在“tidyverse”中似乎很常见,意思是“正则表达式的输出或值”?

任何在何处查找有关如何理解 pivot_longer 的复杂性的信息的任何指导或指示都将不胜感激。

或者这只是一个尝试功能并通过执行了解它的功能的案例?

原始问题链接:[ pivot longer with multiple columns and values

library(tibble)
library(tidyr)


tib <- tibble(type = c(1L, 1L, 1L, 2L, 2L, 2L),
id = c(1L, 2L, 3L, 1L, 2L, 3L),
age2000 = c(20L, 35L, 24L, 32L, 66L, 14L),
age2001 = c(21L, 36L, 25L, 33L, 67L, 15L),
age2002 = c(22L, 37L, 26L, 34L, 68L, 16L),
bool2000 = c(1L, 2L, 1L, 2L, 2L, 1L),
bool2001 = c(1L, 2L, 1L, 2L, 2L, 1L),
bool2002 = c(1L, 2L, 1L, 2L, 2L, 1L))




pivot_longer(tib,
cols = -c(id, type),
names_to = c('.value', 'year'),
names_pattern = '([a-z]+)(\\d+)')

最佳答案

来自 source code , .valuevalues_toNULL这样它就不会使用 values_to 中的名称但单元格本身的名称。

如果你看这一行:

 if (".value" %in% names_to) {
values_to <- NULL
}

然后:
  out <- tibble(.name = cols)
out[[".value"]] <- values_to
out <- vec_cbind(out, names)
out
}
out[[.value]]将选择除 id 和 type 之外的列,然后可以用 names_pattern 重命名这些列.由于名称的格式为 age2000 , names_pattern中断 age2000例如到 age2000后者服用 year.value确保前者保留正则表达式中的内容(此处为年龄)。

关于r - names_to '.value' 约定如何适用于pivot_longer 中每行的多个观察值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61386200/

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