基于前3个条件计算多变量的均值

时间:2017-10-07 03:38:31

标签: r

我有23个变量,其中22个是数字变量,它们是基于ServiceReliability等参数的人的调查数据,所有参数的值都在1-10范围内,99 =中性。< / p>

第23个变量是性别。

我应该把数据分成男性和女性

b <- data.frame(subset(Dataset, Dataset$Gender =='1')) #Male
c <- subset(Dataset, Dataset$Gender =='2') #Female

然后我在这里删除了变量号20,即分析所不需要的年龄

x <- data.frame(b[c(1:19,21,22,23,24)])
y <- data.frame(c[c(1:19,21,22,23,24)])

因此,xy数据框xy分别有22个数字变量和1个分类变量,分别为男性和女性。

现在我应该得到22个数字变量的平均值,以便对于每个变量选择,如果值在0-7&amp;范围内。 99然后不应选择该观察,如果值是8-10,那么应该选择该观察,并且应该获得收集这些观察的平均值(8-10)

z <- subset(colMeans(x[c(1:19,21,22,23)]), x[c(1:19,21,22,23)] > 7 & x[c(1:19,21,22,23)] != 99) #This is where i am facing a problem. I am not getting proper values and results as per my expectation. 

如果您有任何想法如何解决,请帮帮我

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,可能会有以下情况 首先,让我们编写一些数据,因为您还没有发布数据集示例。

set.seed(510)
Dataset <- as.data.frame(matrix(sample(c(1:10, 99), 2400, TRUE), ncol = 24))
names(Dataset)[24] <- "Gender"
Dataset$Gender <- sample(1:2, 100, TRUE)

现在,代码。

a <- subset(Dataset, Gender == 1, select = c(1:19, 21:24))  # Male
b <- subset(Dataset, Gender == 2, select = c(1:19, 21:24))  # Female

sapply(a[-ncol(a)], function(x) mean(x[x > 7 & x != 99]))
sapply(b[-ncol(b)], function(x) mean(x[x > 7 & x != 99]))