用数字除以列

时间:2019-04-24 19:07:32

标签: r

我想将一列的所有值除以3。

当我这样做

x $ V2 / 3

它返回错误“ /”,对因素无意义

当我这样做时-as.numeric(x $ V2)/ 3

例如:-39/3-3.3333333,而不是13。

我不确定是什么问题。你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

快速解答,尽管在评论中已部分解决了该问题。

正如Infominer所建议的那样,您得到的错误是您试图除以3的列实际上是一个因素。按照手册availible here的定义,一个因素是

  

因子是向量对象,用于指定相同长度的其他向量的成分的离散分类(分组)

基本上,如果您有向量c("A", "B", "A", "C"),则可以是character向量,也可以将其映射为给定"A"值为1的因数(首先出现) ),"B"的值为2,而"C"的值为3。可以更改分配的这些值,但这并不重要。正在运行

factorVector <- c("A", "B", "A", "C")
class(factorVector) #[1] "character"
as.numeric(factorVector) #[1] NA NA NA NA  + 1 warning
factorVector <- factor(factorVector)
class(factorVector) #[1] "factor"
as.numeric(factorVector) #[1] 1 2 1 3

说明此属性以及R中的因子和字符之间的关键区别。

请注意,当我尝试将字符向量转换为数字时,它如何返回NA并引发错误,而因数却为factorVector中的每个唯一实例唯一地返回一个数字。

要注意的重要一件事是,当一个人从*.txt*.csv文件中导入数据时,这可能会影响数据的导入方式。例如,read.table(----)对文件中的逗号分隔敏感。在丹麦,小数点用逗号(,)标记,而列用分号(;)分隔。大多数实现都将逗号标准化为列分隔符,并将点(.)标准化为小数点,因此丹麦文文件将

  1. 如果将,标识为列分隔符,则可能会错误地分隔列
  2. 如果确实找到了;作为列分隔符,但将.保留为小数点,则可以将十进制数字转换为字符串,因为未将真正的十进制标记(,)标识为是十进制。

因此,在导入和设置sep(列分隔符)和dec(小数点符号)并通过{{ 1}}或同等功能。例如,read.table将正确读取丹麦文件格式。

似乎您的文件中包含的数字可能没有标准的read.csv("dataFile.txt", sep = ";", dec = ",")作为小数点。在执行计算之前,请确保检查数据是否正确导入。