Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何根据每行中某些变量的个别平均值创建新变量?_R - Fatal编程技术网

R 如何根据每行中某些变量的个别平均值创建新变量?

R 如何根据每行中某些变量的个别平均值创建新变量?,r,R,我有以下数据帧: 我想在R中介绍以下内容: 创建一个名为“Z”的新变量,并将其绑定到我的数据帧 这应该是每行的平均值 如果某个变量为空或包含“NA”,则不应将其计算为平均值 以下是我想要的输出: 以R表示的期望输出: 以下是我尝试过的: 我试着创建一个for循环,循环每一行来计算非空白变量的数量,然后将所有3个变量相加,除以非空白变量的数量。 问题是,我必须对9个变量执行相同的任务(在一个包含50个变量的数据帧中),这意味着一个重复的代码和9个变量的if块 有办法解决吗?base R中的

我有以下数据帧:

我想在R中介绍以下内容:

  • 创建一个名为“Z”的新变量,并将其绑定到我的数据帧
  • 这应该是每行的平均值
  • 如果某个变量为空或包含“NA”,则不应将其计算为平均值
以下是我想要的输出:

以R表示的期望输出:

以下是我尝试过的:

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


有办法解决吗?

base R中的
apply
函数允许在数据帧行上循环。有关更多信息,请参见应用。
mean
函数有一个
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) })

x请添加一个代码块以在r中生成数据帧,以便更快地响应。是否希望将
NA
值视为零?