我需要按行比较四个连续变量及其均值,如果其中三个均值大于均值,则第五列的结果应为是,否则为否。
library(dplyr)
dd <- select_if(iris, is.numeric)
means <- apply(dd, 2, mean)
dd[1,] > means
如果行中有3个TRUE,则5个变量中的结果-Important_cases将为是,如果不是,则必须对所有行都进行输入。
答案 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行使用>=
而不是'==',