R 删除因子级别为1的变量
我正在为我的数据帧R 删除因子级别为1的变量,r,R,我正在为我的数据帧EMGbin使用bnlearn包中的程序gs。数据帧EMGbin包含从A到Z的所有因子。EMGbin有600000列和130行。以下是EMGbin的示例: V101 V102 V103 V104 V105 V106 1 L M D S O O 2 L M C P A O 3 J M C O O O 4 L
EMGbin
使用bnlearn
包中的程序gs
。数据帧EMGbin
包含从A到Z的所有因子。EMGbin
有600000列和130行。以下是EMGbin
的示例:
V101 V102 V103 V104 V105 V106
1 L M D S O O
2 L M C P A O
3 J M C O O O
4 L N D R A O
5 K M D O A O
6 K M C P O O
7 K N D Q O O
8 L N D R O O
9 L M D O O O
10 K M D S A O
当我运行程序gs(EMGbin)
时,我得到错误:
检查错误。数据(x):所有因素必须至少有两个级别。
当我运行
sapply(EMGbin,nlevels)
时,我看到600000个变量中每个变量的因子级别,其中一些被列为1级。用1个因子级别删除变量会有帮助吗?到目前为止,我知道的唯一方法是x[,sapply(x,fun)!=1]
,但我不知道用什么来代替fun
你可以用nlevels
函数检查因子中的级别数。使用以下方法:
x[, sapply(x, nlevels) > 1]
当我使用
nlevels(“A”)
时,返回0。如果我使用nlevels(“O”)
和所有其他字母nlevels
采用因子
参数,则相同。请尝试nlevels(EMGbin$V105)
nlevels(EMGbin$V105)
返回3。这是否意味着对于nlevels(EMGbin$COLNAME)
返回1的值,我需要删除该列以使其工作?您已经得到了大部分答案。你想要x[,sapply(x,fun)!=1]
,你需要用nlevels
代替fun
。