gpt4 book ai didi

r - tidyr spread函数如何将变量作为选择列

转载 作者:行者123 更新时间:2023-12-02 06:50:43 27 4
gpt4 key购买 nike

tidyr 的扩展函数仅接受不带引号的列名。有没有办法可以传递包含列名的变量例如

# example using gather()
library("tidyr")
dummy.data <- data.frame("a" = letters[1:25], "B" = LETTERS[1:5], "x" = c(1:25))
dummy.data
var = "x"
dummy.data %>% gather(key, value, var)

这会产生错误

Error: All select() inputs must resolve to integer column positions.
The following do not:
* var

这是使用匹配函数解决的,它给出了所需的列位置

dummy.data %>% gather(key, value, match(var, names(.)))

但是同样的方法不适用于传播函数

dummy.data %>% spread(a, match(var, names(.)))
Error: Invalid column specification

收集和传播函数是否采用不同的列规范。 Gather 需要一个列索引,而 Spread 没有提到它想要什么

最佳答案

如果您想使用标准评估,则需要使用 gather_spread_

这两个给出相同的结果

dummy.data %>% gather_("key", "value", var)
dummy.data %>% gather(key, value, match(var, names(.)))

这有效:

dummy.data %>% spread_("a",var)
# B a b c d e f g h i j k l m n o p q r s t u v w x y
# 1 A 1 NA NA NA NA 6 NA NA NA NA 11 NA NA NA NA 16 NA NA NA NA 21 NA NA NA NA
# 2 B NA 2 NA NA NA NA 7 NA NA NA NA 12 NA NA NA NA 17 NA NA NA NA 22 NA NA NA
# 3 C NA NA 3 NA NA NA NA 8 NA NA NA NA 13 NA NA NA NA 18 NA NA NA NA 23 NA NA
# 4 D NA NA NA 4 NA NA NA NA 9 NA NA NA NA 14 NA NA NA NA 19 NA NA NA NA 24 NA
# 5 E NA NA NA NA 5 NA NA NA NA 10 NA NA NA NA 15 NA NA NA NA 20 NA NA NA NA 25

关于r - tidyr spread函数如何将变量作为选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31136536/

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