相关疑难解决方法(0)

从字符转换为数字数据框

我在R中有一个字符数据框,里面有NaNs.我需要删除任何行,NaN然后将其转换为数字数据框.

如果我只是在数据框上执行as.numeric,我会遇到以下情况

Error: (list) object cannot be coerced to type 'double'
 1:
 0:
Run Code Online (Sandbox Code Playgroud)

r dataframe

9
推荐指数
2
解决办法
4万
查看次数

如何将包含十进制数的因子列转换为数字?

我有一个csv文件,当我使用此命令

SOLK<-read.table('Book1.csv',header=TRUE,sep=';')
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出

> SOLK
          Time Close Volume
1   10:27:03,6  0,99   1000
2   10:32:58,4  0,98    100
3   10:34:16,9  0,98    600
4   10:35:46,0  0,97    500
5   10:35:50,6  0,96     50
6   10:35:50,6  0,96   1000
7   10:36:10,3  0,95     40
8   10:36:10,3  0,95    100
9   10:36:10,4  0,95    500
10  10:36:10,4  0,95    100
.      .         .       .
.      .         .       .
.      .         .       .
285 17:09:44,0  0,96    404
Run Code Online (Sandbox Code Playgroud)

str(SOLK)结果这

    'data.frame':   285 obs. of  3 variables:
 $ Time  : Factor w/ 174 levels …
Run Code Online (Sandbox Code Playgroud)

r numeric dataframe r-factor

6
推荐指数
3
解决办法
2万
查看次数

因子列上的sum(.)返回不正确的结果

我在这里遇到了一个奇怪的问题.我正在使用data.table一个非常常规的任务,但有些东西我无法解释.我已经想出了解决问题的方法,但我认为理解这里出了什么问题对我来说仍然很重要.

此代码将数据带入工作区:

library(XML)
library(data.table)
theurl <- "http://goo.gl/hOKW3a"
tables <- readHTMLTable(theurl)
new.Res <- data.table(tables[[2]][4:5][-(1:2),])
suppressWarnings(names(new.Res) <- c("Party","Cases"))
Run Code Online (Sandbox Code Playgroud)

这里有两列,PartyCases.两者都有默认类factor.虽然,Cases应该是numeric.最终,我只想要Cases每个的总和Party.所以像这样的东西应该工作:

new.Res[,sum(Cases), by=Party]
Run Code Online (Sandbox Code Playgroud)

但这并没有给出正确的答案.我想,如果我改变类的它会工作Cases,从factornumeric.所以我尝试了以下方法:

new.Res[,Cases := as.numeric(Cases)]
new.Res[,sum(Cases), by=Party]
Run Code Online (Sandbox Code Playgroud)

但我得到了同样错误的答案.我意识到这个问题是在改变类的发生Cases,从factornumeric.所以我尝试了一种不同的方法,它起作用了:

第1步:重新初始化数据:

theurl <- "http://goo.gl/hOKW3a"
tables <- readHTMLTable(theurl)
new.Res <- data.table(tables[[2]][4:5][-(1:2),])
suppressWarnings(names(new.Res) <- c("Party","Cases"))
Run Code Online (Sandbox Code Playgroud)

第2步:使用不同的方法将类更改factornumeric:

new.Res[,Cases := strtoi(Cases)]
new.Res[,sum(Cases), by=Party]
Run Code Online (Sandbox Code Playgroud)

这很好用!但是,我不确定前两种方法有什么问题.我错过了什么?

r data.table

4
推荐指数
1
解决办法
1311
查看次数

标签 统计

r ×3

dataframe ×2

data.table ×1

numeric ×1

r-factor ×1