从 'univariateTable' 生成的 table 中删除具有“0”值的行

Removing rows with '0' values from a table generated by 'univariateTable'

我有一个 table 由虚拟变量(1 和 0)组成,如下所示:

colnames<-c("gender","alpha","beta","gamma","delta","lambda")
row1<-c("male",0,1,0,1,0)
row2<-c("male",1,0,1,1,0)
row3<-c("female",1,0,1,0,0)
row4<-c("male",0,1,1,0,1)
row5<-c("female",0,1,0,1,0)
row6<-c("male",1,1,0,1,0)
df<-as.data.frame(rbind(row1,row2,row3,row4,row5,row6))
names(df)<-colnames
rownames(df) <- NULL

我在 Github

上使用库 'Publish' 将其形成 table
library(Publish)
univariateTable(gender~alpha+beta+gamma+delta+lambda,data=df)

输出的行中同时包含 1 和 0,但出于显而易见的原因我只想要 1

   Variable Level female (n=2) male (n=4) Total (n=6) p-value
1     alpha     0     1 (50.0)   2 (50.0)    3 (50.0)        
2               1     1 (50.0)   2 (50.0)    3 (50.0)       1
3      beta     0     1 (50.0)   1 (25.0)    2 (33.3)        
4               1     1 (50.0)   3 (75.0)    4 (66.7)       1
5     gamma     0     1 (50.0)   2 (50.0)    3 (50.0)        
6               1     1 (50.0)   2 (50.0)    3 (50.0)       1
7     delta     0     1 (50.0)   1 (25.0)    2 (33.3)        
8               1     1 (50.0)   3 (75.0)    4 (66.7)       1
9    lambda     0    2 (100.0)   3 (75.0)    5 (83.3)        
10              1      0 (0.0)   1 (25.0)    1 (16.7)       1

显然,我可以继续手动删除所有奇数行,但我想知道是否有自动方法来执行此操作。

而且,理想情况下,最好同时删除 "level" 列。

应该可行:

cbind(subset(df,level=0,Variable),subset(df,level=1,3:6))

我将变量列并排放置,作为级别 = 0 的 df 的子集,以及 df 的第 3 至 6 列的子集,这次在级别 = 1 上归档。