【问题标题】:Transform to numeric a column with "NULL" values将具有“NULL”值的列转换为数字
【发布时间】:2014-01-16 21:35:11
【问题描述】:

我已经将一个数据集导入到 R 中,其中应该包含 numeric 值的列中存在 NULL。这使得 R 将列类设置为 characterfactor,具体取决于您是否使用 stringAsFactors 参数。

为了让您了解这是数据集的结构。

> str(data)
'data.frame':   1016 obs. of  10 variables:
 $ Date       : Date, format: "2014-01-01" "2014-01-01" "2014-01-01" "2014-01-01" ...
 $ Name       : chr  "Chi" "Chi" "Chi" "Chi" ...
 $ Impressions: chr  "229097" "3323" "70171" "1359" ...
 $ Revenue    : num  533.78 11.62 346.16 3.36 1282.28 ...
 $ Clicks     : num  472 13 369 1 963 161 1 7 317 21 ...
 $ CTR        : chr  "0.21" "0.39" "0.53" "0.07" ...
 $ PCC        : chr  "32" "2" "18" "0" ...
 $ PCOV       : chr  "3470.52" "94.97" "2176.95" "0" ...
 $ PCROI      : chr  "6.5" "8.17" "6.29" "NULL" ...
 $ Dimension  : Factor w/ 11 levels "100x72","1200x627",..: 1 3 4 5 7 8 9 10 11 1 ...

我想将 PCROI 列转换为数字,但包含 NULLs 会使这变得更加困难。 我试图解决将值 0 设置为当前值为 NULL 的所有观察值的问题,但我收到以下错误消息:

> data$PCROI[which(data$PCROI == "NULL"), ] <- 0
Error in data$PCROI[which(data$PCROI == "NULL"), ] <- 0 : 
  incorrect number of subscripts on matrix

我的想法是将所有NULL 观察值更改为0,然后使用as.numeric 函数将所有列转换为数字。

【问题讨论】:

    标签: r class character transformation numeric


    【解决方案1】:

    你有一个语法错误:

    data$PCROI[which(data$PCROI == "NULL"), ] <- 0 # will not work
    data$PCROI[which(data$PCROI == "NULL")] <- 0 # will work
    

    顺便说一句:

    data$PCROI = as.numeric(data$PCROI)
    

    它会自动将您的“NULL”转换为 NA。

    【讨论】:

    • 我不知道为什么我从一开始就没有尝试data$PCROI = as.numeric(data$PCROI) (!?)。谢谢汉斯!
    猜你喜欢
    • 1970-01-01
    • 2020-01-18
    • 2023-01-13
    • 2014-06-23
    • 2018-04-18
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多