计算R中具有非数值的列的平均值

nik*_*hil 2 r

我有一个包含数字和非数字值的列.我想找到数值的平均值,我可以用它来代替非数字值.如何在R中完成?

ada*_*ich 9

假设您的数据框已命名,df并且要调用要修复的列df$x.您可以执行以下操作.

你必须解构然后转换为数字.这将为您提供无法合并到数字的所有字符串的NA.

nums <- as.numeric(as.character(df$x))
Run Code Online (Sandbox Code Playgroud)

正如Richie Cotton指出的那样,有一种"更有效,但更难记住"的方法将因子转换为数字

nums <- as.numeric(levels(df$x))[as.integer(df$x)]
Run Code Online (Sandbox Code Playgroud)

为了得到平均值,你使用mean()但通过na.rm = T

m <- mean(nums, na.rm = T)
Run Code Online (Sandbox Code Playgroud)

将均值分配给所有NA值.

nums[is.na(nums)] <- m
Run Code Online (Sandbox Code Playgroud)

然后你可以替换旧数据,但我不推荐它.而只是添加一个新列

df$new.x <- nums
Run Code Online (Sandbox Code Playgroud)