从R

时间:2018-04-19 00:24:55

标签: r

我的数字为“,”为1000以上,R认为是因素。我想将两个这样的变量从因子切换到数字(实际上两个变量都是数字,但R由于某种原因将它们视为因子(数据在excel中)。要更改两个因子变量(rcffull$Returning.Backers和{{1} })数字变量我使用下面的代码,但似乎没有正常工作,一些值改变,例如它将8180更改为零!它也发生了许多其他值。还有其他方法没有这样的ssues吗?

rcffull$New.Backers

2 个答案:

答案 0 :(得分:2)

由于问题似乎是您已将数字数据保存为Excel中的字符(而不是使用格式显示逗号),您可能需要这样的函数。

#' Replace Commas Function
#'
#' This function converts a character representation of a number that contains a comma separator with a numeric value.
#' @keywords read data
#' @export
replaceCommas<-function(x){
  x<-as.numeric(gsub("\\,", "", x))
}

然后

rcffull$RetBackers <- replaceCommas(rcffull$Returning.Backers)
rcffull$NewBackers <- replaceCommas(rcffull$New.Backers)

答案 1 :(得分:1)

G5W要求dput输出的原因是,他(我们)无法确定哪些因素可能无法正确转换为8180那段代码。这不是因为前导空格或尾随空格(不会出现在print - 版本的因子中。见证此测试:

>  as.numeric(as.character(factor(" 8180")))
[1] 8180
> as.numeric(as.character(factor(" 8180 ")))
[1] 8180

事实上它被转换为0是一个真正的难题,因为通常不会被识别为可解析的R数字的项目将被强制转换为NA(带警告)。

> as.numeric(as.character(factor(" 0 8180 ")))
[1] NA
Warning message:
NAs introduced by coercion 

我们确实需要显示为&#34; 8180&#34;的项目的dput输出。和它的邻居。