相关疑难解决方法(0)

如何在不丢失信息的情况下将因子转换为整数\数字?

当我将因子转换为数字或整数时,我得到基础级别代码,而不是值作为数字.

f <- factor(sample(runif(5), 20, replace = TRUE))
##  [1] 0.0248644019011408 0.0248644019011408 0.179684827337041 
##  [4] 0.0284090070053935 0.363644931698218  0.363644931698218 
##  [7] 0.179684827337041  0.249704354675487  0.249704354675487 
## [10] 0.0248644019011408 0.249704354675487  0.0284090070053935
## [13] 0.179684827337041  0.0248644019011408 0.179684827337041 
## [16] 0.363644931698218  0.249704354675487  0.363644931698218 
## [19] 0.179684827337041  0.0284090070053935
## 5 Levels: 0.0248644019011408 0.0284090070053935 ... 0.363644931698218

as.numeric(f)
##  [1] 1 1 3 2 5 5 3 4 4 1 4 2 3 1 3 5 4 5 3 2

as.integer(f)
##  [1] 1 1 3 2 5 …
Run Code Online (Sandbox Code Playgroud)

casting r r-faq

565
推荐指数
7
解决办法
82万
查看次数

将data.frame列从因子转换为字符

我有一个数据框.我们叫他bob:

> head(bob)
                 phenotype                         exclusion
GSM399350 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399351 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399352 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399353 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399354 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399355 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
Run Code Online (Sandbox Code Playgroud)

我想连接这个数据框的行(这将是另一个问题).但看: …

r dataframe

329
推荐指数
11
解决办法
55万
查看次数

测试字符串中的数字元素

我想测试一个字符串,看看哪些元素实际上可以是数字.我可以使用正则表达式来测试整数是否成功,但我希望看到哪些元素具有所有数字和1或更少的小数.以下是我尝试过的内容:

x <- c("0.33", ".1", "3", "123", "2.3.3", "1.2r")
!grepl("[^0-9]", x)   #integer test

grepl("[^0-9[\\.{0,1}]]", x)  # I know it's wrong but don't know what to do
Run Code Online (Sandbox Code Playgroud)

我正在寻找逻辑输出,所以我希望得到以下结果:

[1] TRUE TRUE TRUE TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)

regex r

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

R:将数据帧行转换为字符向量

精简版:

在尝试将数据帧的单行转换为字符向量时,我不理解as.character的行为.

> mydf <- data.frame("myvar1"=c("mystring","2"),"myvar2"=c("mystring","3"))
> mydf # nice!
myvar1   myvar2
1 mystring mystring
2        2        3
> as.character(mydf[1,])
[1] "2" "2"
> as.character(as.vector(mydf[1,]) ) 
[1] "2" "2"
Run Code Online (Sandbox Code Playgroud)

也许有人可以给我一个解释最后2个输出线和正确的方法?非常感谢.

背景/目的:

我想使用lre()它来检测数据帧的一行中的连续出现的值(具有不同数据类型的列).

问题:lre()需要一个向量,向量需要一个确定的数据类型(整数,字符,因子,......).我的想法是将数据帧行转换为字符向量,以避免通过转换丢失数据.

string r vector type-conversion

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

R ggplot - 错误stat_bin需要连续的x变量

我的表是data.combined,结构如下:

'data.frame':   1309 obs. of  12 variables:
 $ Survived: Factor w/ 3 levels "0","1","None": 1 2 2 2 1 1 1 1 2 2 ...
 $ Pclass  : Factor w/ 3 levels "1","2","3": 3 1 3 1 3 3 1 3 3 2 ...
 $ Name    : Factor w/ 1307 levels "Abbing, Mr. Anthony",..: 109 191 358 277 16 559 520 629 417 581 ...
 $ Sex     : num  2 1 1 1 2 2 2 2 1 1 ... …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

13
推荐指数
1
解决办法
3万
查看次数

在R中没有NA强制将字符转换为数字

我在R中工作并且有一个带有数字向量的数据帧dd_2006.当我第一次导入数据时,我需要从3个变量中删除$,小数点和一些空格:SumOfCost,SumOfCases和SumOfUnits.为此,我用过str_replace_all.但是,一旦我使用str_replace_all,矢量被转换为字符.所以我使用as.numeric(var)将向量转换为数字,但引入了NAs,即使我在运行as.numeric代码之前运行下面的代码时,向量中也没有NA.

sum(is.na(dd_2006$SumOfCost))
[1] 0
sum(is.na(dd_2006$SumOfCases))
[1] 0
sum(is.na(dd_2006$SumOfUnits))
[1] 0
Run Code Online (Sandbox Code Playgroud)

这是导入后的代码,从向量中删除$开始.在str(dd_2006)输出中,我为了空间而删除了一些变量,因此str_replace_all下面代码中的列#s 与我在此处发布的输出不匹配(但它们在原始代码中执行):

library("stringr")
dd_2006$SumOfCost <- str_sub(dd_2006$SumOfCost, 2, ) #2=the first # after the $

#Removes decimal pt, zero's after, and commas
dd_2006[ ,9] <- str_replace_all(dd_2006[ ,9], ".00", "")
dd_2006[,9] <- str_replace_all(dd_2006[,9], ",", "")

dd_2006[ ,10] <- str_replace_all(dd_2006[ ,10], ".00", "")
dd_2006[ ,10] <- str_replace_all(dd_2006[,10], ",", "")

dd_2006[ ,11] <- str_replace_all(dd_2006[ ,11], ".00", "")
dd_2006[,11] <- str_replace_all(dd_2006[,11], ",", "")

str(dd_2006)
'data.frame':   12604 obs. …
Run Code Online (Sandbox Code Playgroud)

r numeric vector character na

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

如何在批量中将所有因子变量更改为数值变量

我有一个数据框,其中包含大约100个我想要更改为数字类型的因子变量.我怎样才能完成整个数据框?我知道我可以通过使用此代码为每个变量执行此操作:dat$.Var2<-as.numeric(dat$.Var2) 但我想为很多变量执行此操作.这是一个示例数据框.

   dat <- read.table(text = " TargetVar  Tar_Var1    Var2       Var3
     0        0        0         7
     0        0        1         1
     0        1        0         3
     0        1        1         7
     1        0        0         5
     1        0        1         1
     1        1        0         0
     1        1        1         6
     0        0        0         8
     0        0        1         5
     1        1        1         4
     0        0        1         2
     1        0        0         9
     1        1        1         2  ", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

variables r dataframe

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

colMeans不在R工作

我作为文件Dummy.txt的数据集如下

A|B|C|D
1|2|1.9|5
2.5|5|53|3
4|48|49|0.4
8|94|495|B6
Run Code Online (Sandbox Code Playgroud)

(请注意第5行,第4列中的文字字符)

我想获得每列的平均值(即A,B,C和D列).

我使用的代码如下:

mydata_1 <- read.delim("Dummy.txt", skipNul = TRUE, sep = "|", header = FALSE, row.names = NULL)

mydata_1 <- as.numeric(as.character(mydata_1))

colMeans(mydata_1, na.rm = TRUE,)
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用.有什么建议吗?

r

0
推荐指数
1
解决办法
575
查看次数