【问题标题】:tidyr - spread "Invalid column specification" [closed]tidyr - 传播“无效的列规范”[关闭]
【发布时间】:2017-07-24 07:41:47
【问题描述】:

我想将以下 data.frame 的 DATE 分布到列中,并将年份放在行中。我的数据结构是:

> str(df)
'data.frame':   836 obs. of  3 variables:
 $ DATE: Date, format: "2014-01-03" "2014-01-04" "2014-01-06" "2014-01-07" ...
 $ VALUE    : num  1 3 1 1 2 6 1 2 1 1 ...
 $ YEAR      : chr  "2014" "2014" "2014" "2014" ...

spread(df, key=DATE, value=VALUE)

但我收到错误消息“无效的列规范”。传播这个功能不合适吗?


编辑:

> str(dfTest)
'data.frame':   836 obs. of  3 variables:
 $ DATE: Date, format: "2015-01-16" "2014-01-06" "2016-07-28" "2016-05-31" ...
 $ VALUE    : num  2 1 3 1 2 22 5 1 4 2 ...
 $ YEAR      : int  2015 2014 2016 2016 2016 2016 2017 2016 2015 2014 ...
> 
> head(dfTest)
  DATE        VALUE YEAR
1 2015-01-16      2 2015
2 2014-01-06      1 2014
3 2016-07-28      3 2016
4 2016-05-31      1 2016
5 2016-04-28      2 2016
6 2016-12-23     22 2016
> spread(dfTest, key=dfTest$DATE, value=dfTest$VALUE)
Error: Invalid column specification

【问题讨论】:

  • 能否请您展示一个可重复的小示例,因为它适用于我使用 df <- data.frame(DATE = rep(Sys.Date() +0:5, each = 3), VALUE = sample(1:5, 18, replace = TRUE), YEAR = 2003:2008);spread(df, key=DATE, value=VALUE)
  • 我用上面的例子改变了我的帖子。你的例子很好,但我认为我的例子是一样的。
  • 我认为您不需要 $ 运算符。试试spread(dfTest, key=DATE, value=VALUE)
  • $-运算符是错误的!谢谢!!!

标签: r tidyr


【解决方案1】:

我无法重现您的问题。

脚本

library(tidyr)

df <- data.frame(
    DATE = c("2014-01-03", "2014-01-04", "2015-01-06", "2015-01-07", "2016-01-03", "2016-01-04", "2017-01-06", "2017-01-07"),
    VALUE = c(1, 3, 6, 2, 4, 3, 4, 1),
    YEAR = c("2014", "2014", "2015", "2015", "2016", "2016", "2017", "2017")
    )

df$DATE <- as.Date(df$DATE)
df$YEAR <- as.character(df$YEAR)
str(df)

spread(df, key = DATE, value = VALUE)

输出

#str(df)
'data.frame':    8 obs. of  3 variables:
 $ DATE : Date, format: "2014-01-03" "2014-01-04" "2015-01-06" "2015-01-07" ...
 $ VALUE: num  1 3 6 2 4 3 4 1
 $ YEAR : chr  "2014" "2014" "2015" "2015" ...

#spread(df, key = DATE, value = VALUE)
  YEAR 2014-01-03 2014-01-04 2015-01-06 2015-01-07 2016-01-03 2016-01-04 2017-01-06 2017-01-07
1 2014          1          3         NA         NA         NA         NA         NA         NA
2 2015         NA         NA          6          2         NA         NA         NA         NA
3 2016         NA         NA         NA         NA          4          3         NA         NA
4 2017         NA         NA         NA         NA         NA         NA          4          1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 2015-02-13
    • 2018-07-23
    • 2020-01-19
    • 2015-08-16
    • 2021-02-09
    • 2016-02-08
    • 1970-01-01
    相关资源
    最近更新 更多