如何根据每一行中某些变量的平均值来创建新变量?

时间:2020-08-12 19:20:02

标签: r

我有以下数据框:

enter image description here

我要在R中执行以下操作:

  • 创建一个名为“ Z”的新变量,并将其绑定到我的数据框
  • 这应该是每一行的平均值
  • 如果某个变量为空或包含“ NA”,则不应计入平均值。

这是我想要的输出:

R中所需的输出:

enter image description here

这是我尝试做的事情:

我尝试创建一个for循环,该循环遍历每一行以计数非空白变量的数量,然后将所有3个变量相加并除以非空白变量的数量。 问题是,我必须对9个变量(在包含50个变量的数据帧中)执行相同的任务,这将意味着重复的代码以及是否有9个变量的块。

有办法解决吗?

1 个答案:

答案 0 :(得分:1)

基数R中的apply函数允许循环数据行。有关更多信息,请参见?applymean函数具有一个na.rm选项,可以自动处理NA个条目。

x <- data.frame(
  id = c("A", "B"),
  A = c(5, 2),
  B = c(NA, 5),
  C = c(NA, 2)
)

x$Z <- apply(x[2:4], 1, function(x) { mean(x, na.rm = TRUE) })