当我将因子转换为数字或整数时,我得到基础级别代码,而不是值作为数字.
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) 我有一个数据框.我们叫他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)
我想连接这个数据框的行(这将是另一个问题).但看: …
我想测试一个字符串,看看哪些元素实际上可以是数字.我可以使用正则表达式来测试整数是否成功,但我希望看到哪些元素具有所有数字和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) 精简版:
在尝试将数据帧的单行转换为字符向量时,我不理解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()需要一个向量,向量需要一个确定的数据类型(整数,字符,因子,......).我的想法是将数据帧行转换为字符向量,以避免通过转换丢失数据.
我的表是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中工作并且有一个带有数字向量的数据帧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) 我有一个数据框,其中包含大约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) 我作为文件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)
但是,这似乎不起作用.有什么建议吗?