我试图找到一种方法来识别数据帧中的列,这些列的任何条目都等于0。如果该特定列的值等于0,我希望创建一个新的数据框架,而不包含零值的列。此外,我希望创建保留的列和删除的列的列表。
Example:
dataframe1:
Column1 Column2 Column3 Column4
.03 .05 .07 .08
.01 .09 .22 .39
0 .56 .88 .56
dataframe2:
Column1 Column2 Column3 Column4
.03 .05 .07 .08
.01 .09 .22 .39
0 .56 .88 .56
retainedColumns = 2, 3, 4
removedColumns = 1我想这在dplyr中可以很容易做到。至于创建新的数据框架,我尝试代码(不断崩溃):
dataframe2<-dataframe1[!dataframe1 %in% 0, ] 任何帮助都将不胜感激。
发布于 2019-03-16 22:12:49
你可以做下面的事。基本上,您是用colSums(df==0)对每列中的零数进行求和。前面的!不包括所有没有零和等于0的列。
df[!colSums(df==0)]
Column2 Column3 Column4
1 0.05 0.07 0.08
2 0.09 0.22 0.39
3 0.56 0.88 0.56下面是如何获得保留和删除的列列表:
retainedColumns <- which(!colSums(df==0))
#Column2 Column3 Column4
# 2 3 4
removedColumns <- which(colSums(df==0) > 0)
#Column1
# 1
#A double negation (!!) would also work here:
removedColumns <- which(!!colSums(df==0))数据
df <- read.table(text="Column1 Column2 Column3 Column4
.03 .05 .07 .08
0 .09 .22 .39
0 .56 .88 .56", header=TRUE, stringsAsFactors=FALSE)https://stackoverflow.com/questions/55201967
复制相似问题