删除字符串的多个空列

时间:2019-04-16 02:28:14

标签: r string character

我有一个数据表,如下所示:

old1   old2   old3   old4
aaa           ccc
aaa    bbb     
       bbb    ccc    ddd    

我要删除空列,使其具有以下内容:

new1  new2   new3   
aaa   ccc
aaa   bbb     
bbb   ccc    ddd   

我尝试了以下对我不起作用的事情:

df[, colSums(df!= "") != ""]
df[!sapply(df, function (x) all(is.na(x) | x == ""))]
Filter(function(x) !(all(x==""|x==0)), df) 

1 个答案:

答案 0 :(得分:1)

使用基数R CodingKey的一个选项是首先计算最终数据帧(CodingKey)中将出现的列数。过滤每行中的空值,并使用Encodable插入空值。

Decodable

使用apply / cols的另一种选择是添加新的行号列,使用repcols <- max(rowSums(df != "")) as.data.frame(t(apply(df, 1, function(x) { vals <- x[x != ""] c(vals, rep("", cols - length(vals))) }))) # V1 V2 V3 #1 aaa ccc #2 aaa bbb #3 bbb ccc ddd 非空值将其转换为长格式,每个gather spread,并使用gather指定新的列名,最后使用filter将其转换为宽格式。

group_by