如何逐行比较连续变量及其均值

时间:2018-09-17 04:22:56

标签: r

我需要按行比较四个连续变量及其均值,如果其中三个均值大于均值,则第五列的结果应为是,否则为否。

library(dplyr)
dd <- select_if(iris, is.numeric)
means <- apply(dd, 2, mean)
dd[1,] > means    

如果行中有3个TRUE,则5个变量中的结果-Important_cases将为是,如果不是,则必须对所有行都进行输入。

2 个答案:

答案 0 :(得分:1)

df <- iris[,1:4]
colMeans(df)
# Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#     5.843333     3.057333     3.758000     1.199333 
df$Compare <- ifelse(rowSums(df > colMeans(df)) > 3, "Yes", "No")
tail(df)
#     Sepal.Length Sepal.Width Petal.Length Petal.Width Compare
# 145          6.7         3.3          5.7         2.5      No
# 146          6.7         3.0          5.2         2.3     Yes
# 147          6.3         2.5          5.0         1.9      No
# 148          6.5         3.0          5.2         2.0      No
# 149          6.2         3.4          5.4         2.3      No
# 150          5.9         3.0          5.1         1.8     Yes

答案 1 :(得分:0)

我不确定您是否想要这个,但我希望这会有所帮助:

data(iris)
df <- iris[, 1:4]
cm = colMeans(df)
df[,5] = apply(df, 1, function(x){
    compares = x> cm
        if(sum(compares) == 3){
            return ("YES")
        }else{
            return ("No")
            }
})

如果您希望变量中的3个或更多大于其输出的平均值,则为“ YES”,请在第6行使用>=而不是'==',