我想为缺失的值创建一个空的数据框,例如:
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_n
和NA_p
来更改#NA
和%NA
,那是行不通的。
答案 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"