gpt4 book ai didi

R:tidyr::spread 的编程替代方案?

转载 作者:行者123 更新时间:2023-12-02 15:08:16 26 4
gpt4 key购买 nike

我有 R data.frames 有不同数量的列。最后一列是数字,其余是字符串。我需要对它们进行排列,以便展开最后一个非数字列。困难在于我想以编程方式执行此操作,因为我不知道列名。

例如

df <- data.frame(varA = c("A1", "A1", "A2", "A2"),
varB = c("B1", "B2", "B1", "B2"),
val = c(1, 2, 3, 4))

我到达我想去的地方

tidyr::spread(df, varB, val)

但是当传播变量的名称未知时,我不知道如何实现这一点。

例如这行不通:

tidyr::spread(df, names(df)[ncol(df) - 1], val)

我已经尝试过 tidyverse 解决方案,但基础 R 对我来说同样适用。

最佳答案

spread_tidyr 0.7.0 开始被弃用,tidyr 中的编程已切换到 tidy 评估。参见 this article了解更多背景。

要在 spread 中使用字符串,您需要 rlang 包中的 sym 函数以及 !! 取消引用以进行评估。

spread(df, !!rlang::sym(names(df)[ncol(df) - 1]), val)

varA B1 B2
1 A1 1 2
2 A2 3 4

关于R:tidyr::spread 的编程替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45814643/

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