有#或%符号的姓氏-R

时间:2019-02-11 17:53:00

标签: r

我想为缺失的值创建一个空的数据框,例如:

df_miss <- data.frame(
  Variable = character(),
  dtype = character(),
  NA_n = numeric(),
  NA_p = numeric(),
  Un_Ct = character()
) 

但是,我需要将NA_n称为#NA,将NA_p称为%NA。这可能吗?

我的最终目标是创建一个数据框(df_miss),其中包含有关缺失值的信息。我将通过以下内容遍历主数据框(df

x <- NULL
for (i in 1:ncol(df)){
  x <- data.frame(
    Variable = colnames(df)[i],
    dtype = class(df[,i]),
    NA_n = sum(is.na(df[,i])),
    NA_p = round(sum(is.na(df[,i]))/dim(df)[1]*100,2),
    Un_Ct = paste(unique(df[,i]), collapse=";"))
  df_miss <- rbind(df_miss,x)
} 

此循环运行完美。但是,如果我分别用NA_nNA_p来更改#NA%NA,那是行不通的。

1 个答案:

答案 0 :(得分:1)

不常见的列名会附加X,同时删除某些字符,因为data.frame默认情况下会使用check.names = TRUE检查列名。通过将其设置为FALSE并用引号引起来,可以实现

df_miss <- data.frame(
   Variable = character(),
   dtype = character(),
   `#NA` = numeric(),
   `%NA` = numeric(),
   Un_Ct = character(), check.names = FALSE
 )

names(df_miss)
#[1] "Variable" "dtype"    "#NA"      "%NA"      "Un_Ct"