R中的条件均值

时间:2017-05-15 13:43:01

标签: r conditional

我目前面临 R 中的数据操作问题,到目前为止我还没有找到解决方案(虽然有许多看似相似的问题但是,这些问题并没有引导我路径)。

示例数据说明 数字(1-3)指的是受访者被询问的单独实体。这些实体具有不同的角色(x)和属性(y)。

ID x1 x2 x3 y1 y2 y3
A  1  1  5  4  3  2
B  2  2  2  3  4  5

这里重点是x1链接到y1,x2到y2等等。

目标: 对于每个案例。我想为每个角色x得到y的平均得分(在单独的附加列中,例如,m1,m2,m3,m4,m5)

示例:

  • 对于ID == A,我们期望x == 1:(4 + 3)/ 2 = 3.5 [" 2"不需要作为"链接" x3的值不等于1]
  • 对于ID == A,我们期望x == 3:(2)/ 1 = 2
  • 对于ID == B,我们期望x == 1:NA
  • 对于ID == B,我们期望x == 2:(3 + 4 + 5)/ 3 = 4

任何提示?谢谢!

1 个答案:

答案 0 :(得分:0)

我会先重新构建你的数据,但鉴于它是如何,这可能会有用......

df <- read.table(header = T, text = '
ID x1 x2 x3 y1 y2 y3
A  1  1  3  4  3  2
B  2  2  2  3  4  5
')

for (entity in 1:3) {
  df[paste0('m', entity)] <- sapply(1:nrow(df), function(row) { 
    value <- mean(df[row, 5:7][df[row, 2:4] == entity])
    ifelse(is.nan(value), NA, value)
  })
}

df

给出了这个......

  ID x1 x2 x3 y1 y2 y3  m1 m2 m3
1  A  1  1  3  4  3  2 3.5 NA  2
2  B  2  2  2  3  4  5  NA  4 NA