如何删除R中的空列?

如何删除R中的空列?,r,csv,R,Csv,我有一个CSV文件 Identity,Number,Data,Result,Add,,,,,,,,,,,, 1,,,,4,55,,92,,,,,,,,,62, 3,,,,7,43,,12,,,,,,,,,74, 7,,,,3,58,,52,,,,,,,,,64, 0,,,,6,10,,22,,,,,,,,,96, 3,,,,8,13,,92,,,,,,,,,22, 如何删除R中的空列 期望输出 Identity,Number,Data,Result,Add 1,4,55,92,62 3,7,4

我有一个CSV文件

Identity,Number,Data,Result,Add,,,,,,,,,,,,
1,,,,4,55,,92,,,,,,,,,62,
3,,,,7,43,,12,,,,,,,,,74,
7,,,,3,58,,52,,,,,,,,,64,
0,,,,6,10,,22,,,,,,,,,96,
3,,,,8,13,,92,,,,,,,,,22,
如何删除R中的空列

期望输出

Identity,Number,Data,Result,Add
1,4,55,92,62
3,7,43,12,74
7,3,58,52,64
0,6,10,22,96
3,8,13,92,22

加载数据文件,不包括标题行:

mydf <- 
read.csv(text='Identity,Number,Data,Result,Add
1,,,,4,55,,92,,,,,,,,,62,
3,,,,7,43,,12,,,,,,,,,74,
7,,,,3,58,,52,,,,,,,,,64,
0,,,,6,10,,22,,,,,,,,,96,
3,,,,8,13,,92,,,,,,,,,22,', header=FALSE, skip=1)
n <- read.csv(text='Identity,Number,Data,Result,Add', header=TRUE)
注意,如果已将其另存为文件,则完整代码应为:

mydf <- read.csv('file.csv', header=FALSE, skip=1)
n <- read.csv('file.csv', header=TRUE, nrows=1)
setNames(mydf[,sapply(mydf, function(x) all(!is.na(x)))],names(n))

mydf导入数据后(使用另一位回答者建议的方法),运行此命令,用
mydf
替换您决定调用数据帧的内容:

#Remove empty columns
mydf <- Filter(function(x)!all(is.na(x)), mydf)
#删除空列

mydf将空细胞转化为NA,然后移除NAs

mydata[mydata == ""] <- NA
mydata<- mydata[,colSums(is.na(mydata)) < <a desired filter value>]

mydata[mydata==“”]如果我们像您在本例中那样有有限的列,下面将是一个巧妙的解决方法

myDF<-myDF[,c(1,2,3,4,5)]

myDF只保留那些名称不为空的列怎么样

> mydf <- mydf[,names(mydf)!=""]

>mydf更复杂的删除逻辑如下:

mydf <- Filter(function(x)!all(is.na(x) || is.null(x) || x == "" || x == 0), mydf)
mydf从

使用来自Thomas post的输入:

> mydf

  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18
1  1 NA NA NA  4 55 NA 92 NA  NA  NA  NA  NA  NA  NA  NA  62  NA
2  3 NA NA NA  7 43 NA 12 NA  NA  NA  NA  NA  NA  NA  NA  74  NA
3  7 NA NA NA  3 58 NA 52 NA  NA  NA  NA  NA  NA  NA  NA  64  NA
4  0 NA NA NA  6 10 NA 22 NA  NA  NA  NA  NA  NA  NA  NA  96  NA
5  3 NA NA NA  8 13 NA 92 NA  NA  NA  NA  NA  NA  NA  NA  22  NA

> mydf %>% remove_empty("cols")

1  1  4 55 92  62
2  3  7 43 12  74
3  7  3 58 52  64
4  0  6 10 22  96
5  3  8 13 92  22

我已经编辑了我的问题,现在标题中也有相同数量的逗号,所以基本上它被解读为16 col而不是5 col,如何解决这个问题,谢谢你的帮助。
> mydf

  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18
1  1 NA NA NA  4 55 NA 92 NA  NA  NA  NA  NA  NA  NA  NA  62  NA
2  3 NA NA NA  7 43 NA 12 NA  NA  NA  NA  NA  NA  NA  NA  74  NA
3  7 NA NA NA  3 58 NA 52 NA  NA  NA  NA  NA  NA  NA  NA  64  NA
4  0 NA NA NA  6 10 NA 22 NA  NA  NA  NA  NA  NA  NA  NA  96  NA
5  3 NA NA NA  8 13 NA 92 NA  NA  NA  NA  NA  NA  NA  NA  22  NA

> mydf %>% remove_empty("cols")

1  1  4 55 92  62
2  3  7 43 12  74
3  7  3 58 52  64
4  0  6 10 22  96
5  3  8 13 92  22