我想删除此数据框中的行:
a)包含NA所有列的s.下面是我的示例数据框.
gene hsap mmul mmus rnor cfam
1 ENSG00000208234 0 NA NA NA NA
2 ENSG00000199674 0 2 2 2 2
3 ENSG00000221622 0 NA NA NA NA
4 ENSG00000207604 0 NA NA 1 2
5 ENSG00000207431 0 NA NA NA NA
6 ENSG00000221312 0 1 2 3 2
Run Code Online (Sandbox Code Playgroud)
基本上,我想获得如下的数据框.
gene hsap mmul mmus rnor cfam
2 ENSG00000199674 0 2 2 2 2
6 ENSG00000221312 0 1 2 3 2
Run Code Online (Sandbox Code Playgroud)
b)只在某些列中包含NAs …
我有一个混合类数据帧(数字和因子),我试图将整个数据帧转换为数字.以下说明了我正在使用的数据类型以及我遇到的问题:
> a = as.factor(c(0.01,0.02,0.03,0.04))
> b = c(2,4,5,7)
> df1 = data.frame(a,b)
> class(df1$a)
[1] "factor"
> class(df1$b)
[1] "numeric"
Run Code Online (Sandbox Code Playgroud)
当我尝试将整个数据框转换为数字时,它会改变数值.例如:
> df2 = as.data.frame(sapply(df1, as.numeric))
> class(df2$a)
[1] "numeric"
> df2
a b
1 1 2
2 2 4
3 3 5
4 4 7
Run Code Online (Sandbox Code Playgroud)
此站点上的先前帖子建议使用as.numeric(as.character(df1$a)),这对于一列非常有用.但是,我需要将此方法应用于可能包含数百列的数据框.
将整个数据帧从因子转换为数字,同时保留数字十进制值,我有哪些选择?
下面是我想产生其中输出a和b是数字:
a b
1 0.01 2
2 0.02 4
3 0.03 5
4 0.04 7
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)