【问题标题】:Questions about gather and rename function关于收集和重命名功能的问题
【发布时间】:2016-01-05 09:05:57
【问题描述】:
  1. 在使用收集文档中的示例练习收集功能时。 我发现结果不会自动命名为我在收集函数参数中给出的股票和价格。因此,在那之后我将不得不使用 mutate 或 rename 函数。 这是每个设计还是我如何通过收集功能在那里获得名称? 我还检查了之前提出的问题,tidyr gather: simultaneously gather and rename key?,但是,我尝试了 Steven 提供的答案,但它会显示:

    match.names 中的错误(clabs, names(xi)) :
    当我收集时,名称与以前的名称不匹配。

  2. 对于rename 函数,即使我只想重命名某些列,我们是否必须指定每个名称? 它显示了

    错误:所有要重命名的参数都必须命名。

如果我不想更改某些列名,看来我需要自己分配相同的名称?

我正在使用带有 Rstudio v0.98.1103、tidyr v0.20、dplyr v0.41 的 Mac

library(dplyr)
# From https://stackoverflow.com/questions/1181060
stocks <- data.frame(
    time = as.Date('2009-01-01') + 0:9,
    X = rnorm(10, 0, 1),
    Y = rnorm(10, 0, 2),
    Z = rnorm(10, 0, 4)
)

gather(stocks, stock, price, -time)

另一个帖子中的类似问题,Can't change the column names outputted by "gather" to be anything other than the default names

我尝试分离plyr,但仍然无法正常工作。

【问题讨论】:

标签: r tidyr


【解决方案1】:

我确实得到了正确的股票和价格名称结果

library(tidyr) # You had put dplyr
library(dplyr) # For the pipes %>%

# From http://stackoverflow.com/questions/1181060
stocks <- data.frame(
  time = as.Date('2009-01-01') + 0:9,
  X = rnorm(10, 0, 1),
  Y = rnorm(10, 0, 2),
  Z = rnorm(10, 0, 4)
)

stocks_long1 <- stocks %>%
  gather(stock, price, -time)

stocks_long1

如果您要重命名的是 X、Y 和/或 Z,那么您可以这样做

# Rename before gathering
stocks_long2 <- stocks %>%
  rename(X1=X, Y1=Y, Z1=Z) %>%
  gather(stock, price, -time)

stocks_long2

希望对你有帮助

编辑:

如果你不想要 time 变量,你可以这样做

stocks_long3 <- stocks %>%
  gather(stock, price, -time) %>%
  select(-time)

stocks_long3

【讨论】:

  • 我运行您使用stocks_long1 提供的代码,但名称仍然是变量和值,时间没有被删除。我很困惑是什么造成了不同。 >stocks_long1 时间变量值 1 2009-01-01 X -0.5325 2 2009-01-02 X -0.2173
  • 尝试使用tidyr::gather 而不是仅仅gather。我得到了正确的结果,所以也许你在屏蔽函数或类似的东西时遇到了一些问题。
  • 我尝试使用 tidyr::gather 但仍然得到相同的结果 :(,感谢您的建议,所以看起来我可以尝试找到一些有关掩蔽的资源来解决这个问题?真的很感谢您回答。
  • 没问题。您能否编辑您的问题并添加运行stocks_long1(以及stocks)时得到的结果?您收到任何错误/警告吗?发生了真的很奇怪的事情。
  • 好像是包版本问题,后面的tidyr版本修复了。 stackoverflow.com/questions/32598113/… 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多