关于 gather 和 rename 函数的问题

Questions about gather and rename function

  1. 一边用 gather 文档中的例子练习 gather 函数。 我发现结果不会自动命名为我在 gather 函数参数中给出的股票和价格。因此,之后我将不得不使用 mutate 或 rename 函数。 这是每个设计还是我如何通过收集功能获得名称? 我也检查了之前问的问题,,然而,我尝试了史蒂文提供的答案,但它会显示:

    Error in match.names(clabs, names(xi)) :
    names do not match previous names" when I do gather.

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

    Error: All arguments to rename must be named.

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

我正在使用 Mac 和 Rstudio v0.98.1103、tidyr v0.20、dplyr v0.41

library(dplyr)
# From 
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 但仍然无法正常工作。

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

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

# From 
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,Yand/orZ,那么你可以

# 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