【问题标题】:Wrong R data type or bad data?错误的 R 数据类型或错误的数据?
【发布时间】:2012-01-02 03:11:42
【问题描述】:

我在对数据框执行简单函数时遇到问题,我不确定是列的数据类型,还是数据框中的错误数据。

我将 SQL 查询导出到 CSV 文件中,然后将其加载到数据框中,然后附加它。

df <-read.csv("~/Desktop/orders.csv")
Attach(df)

当我完成并运行 str(df) 后,我得到了:

$ AccountID: Factor w/ 18093 levels "(819947 row(s) affected)",..: 10 97 167 207 207 299 299 309 352 573 ...
$ OrderID   : int  1874197767 1874197860 1874196789 1874206918 1874209100 1874207018 1874209111 1874233050 1874196791 1875081598 ...
$ OrderDate : Factor w/ 280 levels "","2010-09-24",..: 2 2 2 2 2 2 2 2 2 2 ...
$ NumofProducts  : int  16 6 4 6 10 4 2 4 6 40 ...
$ OrderTotal    : num  20.3 13.8 12.5 13.8 16.4 ...
$ SpecialOrder : int  1 1 1 1 1 1 1 1 1 1 ...   

尝试运行以下函数,这是我得到的:

> length(OrderID)
[1] 0

> min(OrderTotal)
[1] NA

> min(OrderTotal, na.rm=TRUE)
[1] 5.00

> mean(NumofProducts)
[1] NA

> mean(NumofProducts, na.rm=TRUE)
[1] 3.462902

我有两个关于这个数据框的问题:

  • 我的列数据类型是否正确?数字与整数与小数。
  • 有没有一种方法可以查看数据集以找到需要使用 na.rm=TRUE 来使函数工作的行?我想知道有多少等等。

【问题讨论】:

  • 将列名暴露给全局环境的常用函数是 attach(df),那么您是使用了不同的函数还是拼错了?
  • @DWin 你是说attach() 还是Attach()
  • 是的。在 R Attach() 中不是基本函数。因此,如果它有效,它必须来自其他包。

标签: r numbers integer


【解决方案1】:

在这个阶段,num 和 int 之间的区别是无关紧要的。

有关 NA 处理的初学者请参阅 help(is.na)。执行以下操作:

sum(is.na(foo))

查看有多少 foo 是 NA 值。然后是:

df[is.na(df$foo),]

查看 df 中 foo 为 NA 的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多