【问题标题】:R Modify the class DIFFTIME to histR 将类 DIFFTIME 修改为 hist
【发布时间】:2017-04-18 16:44:28
【问题描述】:

在我的脚本中,我已经转换了这个 data.frame,如下所示:

df.modified<-transform(df, new.col= Payment.date-Selectionfinal$Invoice.Date)

这是结果:

    Client.Code. Invoice.Date Payment.date  new.col
1:      1004850   2016-01-31   2016-11-22 296 days
2:      1004850   2016-06-30   2016-11-22 145 days
3:      1004850   2016-06-30   2016-11-22 145 days
4:      1004850   2016-06-30   2016-11-22 145 days
5:      1004850   2016-09-30   2016-11-22  53 days

然后,我需要将其绘制成直方图,但我有这个问题:

> hist(df.modified[,c(4)])
Error in hist.default(Completo[, c(4)]) : 'x' must be numeric

这是我的 df 的 str:

$ Client.Code.: int  1004850 1004850 1004850 1004850 1004850 1004850 1004850 1004874 1004874 1005133 ...
$ Invoice.Date: Date, format: "2016-01-31" "2016-06-30" "2016-06-30" "2016-06-30" ...
$ Payment.date: Date, format: "2016-11-22" "2016-11-22" "2016-11-22" "2016-11-22" ...
$ new.col     :Class 'difftime'  atomic [1:4430] 296 145 145 145 53 53 53 102 72 71 ...

我想知道其中的诀窍。谢谢。

【问题讨论】:

  • hist(as.numeric(df.modified[,c(4)]))
  • 我以前试过这个:(> hist(as.numeric(df.modified[,c(4)])) 错误在 hist(as.numeric(df.modified[, c(4) ])) : (list) 对象不能被强制输入 'double')
  • @ÁlvaroRodríguez 你还需要解决这个问题吗?

标签: r histogram difftime


【解决方案1】:

正如 Kristofersen 已经指出的那样,问题在于您作为数据传递给 hist 函数的类型。数据预计为numeric,不接受difftime

# some data mimicking your data
Client.Code. <- c(1004850, 1004849, 1004850, 1004850, 1004851)
Invoice.Date <- as.Date(c("2016-01-31", "2016-03-30", "2016-06-30", "2016-06-30", "2016-04-30"))
Payment.date <- as.Date(c("2016-11-22", "2016-10-22", "2016-09-22", "2016-08-22", "2016-10-09"))
# creating the new column in a similar way to your way
df <- data.frame(Client.Code., Invoice.Date, Payment.date)
df$new.col <- df$Payment.date - df$Invoice.Date

## the following 3 do not work because they pass difftime to hist()
hist(df[,c(4)])
hist(df[,4])
hist(df$new.col)

# class of difftime
class(df$new.col)

## these 3 do work: numeric is passed to hist()
hist(as.numeric(df$new.col))
hist(as.numeric(df[,4]))
hist(as.numeric(df[,c(4)])) 

【讨论】:

  • 嗨,KoenV,正如我之前所说,我在问题之前尝试过这个:
  • 嗨,Alvaro,我已经运行并测试了我的代码。它对我来说很好。
猜你喜欢
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多