【问题标题】:How can you convert a class "character" to class "numeric" in R如何在 R 中将“字符”类转换为“数字”类
【发布时间】:2018-06-27 19:28:17
【问题描述】:

我正在运行以下代码以按 INV_ITEM_ID 列进行汇总。

temptable <- temptable[, lapply(.SD, sum), by = INV_ITEM_ID,
                         .SDcols = c("Ext Sale", "Ext Total Cost", "CE100", 
                          "CE110","CE120","QTY_SOLD","PACKSLIP_WHSL")]

问题在于 INV_ITEM_ID 是字符类型。我需要将其转换为数字类型,以便正确汇总数据。

我该怎么做。目前它汇总但不留下不同的值。

【问题讨论】:

  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
  • by= 列在给定一列类字符时应该显示不同的值......没有具体的例子,我想我们很难弄清楚。
  • 是的,它们是字符,但是当我运行脚本时,它会吐出 5,135,153 行和 933,049 个不同的值。我在想如果我把它切换到数字它会解决这个问题。不过,我认为这不是现在的解决方案。

标签: r data.table


【解决方案1】:

我认为这是对这里回答的问题的一个转折: Converting a factor to numeric without losing information R (as.numeric() doesn't seem to work)

你能用这些电话包裹INV_ITEM_ID吗:as.numeric(as.character(INV_ITEM_ID))

【讨论】:

  • 当用 as.numeric(as.character(INV_ITEM_ID)) 包装它时,它不会留下不同的值。
【解决方案2】:

我自己用Reshape2 遇到了这个问题。首先,确保变量确实是一个字符:

is.character(your_data$INV_ITEM_ID)

这应该返回TRUE

如果是,那么:

your_data$INV_ITEM_ID <- as.numeric(your_data$INV_ITEM_ID)

sapply() 将值显示为一种数据类型时遇到问题,但当我使用 is.numeric() 进行测试时,它作为另一种数据类型进行了测试

【讨论】:

  • 使用它确实允许我运行脚本,但是它添加了列但是是空白的。
  • 当你运行is.character()时,它是否返回TRUE
  • 是的,它确实返回了 true
  • 为了更简单,我只用另一列运行数据。我使用了以下代码。 temptable
  • 听起来像是字符串问题。你试过trim()吗?也许他们是空白。也可以尝试:sum(!duplicated(df$column_name)) 来计算列中不同的数量。
猜你喜欢
  • 2016-03-05
  • 2021-10-08
  • 2021-12-08
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多