我想计算每个变量的平均值,然后我想创建一个具有3个最大平均值的变量名称列表。
然后,我将使用此列表对我的数据帧进行子集化,并且仅在其他分析中包含3个选定的变量。
我很接近,但似乎无法有效地编写代码。而我第一次尝试使用烟斗。
这是一个简化的数据集。
FA1 <- c(0.68, 0.79, 0.65, 0.72, 0.79, 0.78, 0.77, 0.67, 0.77, 0.7)
FA2 <- c(0.08, 0.12, 0.07, 0.13, 0.09, 0.12, 0.13, 0.08, 0.17, 0.09)
FA3 <- c(0.1, 0.06, 0.08, 0.09, 0.06, 0.08, 0.09, 0.09, 0.06, 0.08)
FA4 <- c(0.17, 0.11, 0.19, 0.13, 0.14, 0.14, 0.13, 0.16, 0.11, 0.16)
FA5 <- c(2.83, 0.9, 3.87, 1.55, 1.91, 1.46, 1.68, 2.5, 3.0, 1.45)
df <- data.frame(FA1, FA2, FA3, FA4, FA5)
这是我编写的一段代码,它并不能让我得到我想要的东西。
colMeans(df) %>% rank()
答案 0 :(得分:3)
首先确定具有最高平均值的三列。我使用colMeans
来计算列平均值。然后我sort
通过递减顺序的方式,只保留前三个,这是最大的三个。
three <-sort(colMeans(df),decreasing = TRUE)[1:3]
然后,只保留那些列。
df[,names(three)]
> df[,names(three)]
FA5 FA1 FA4
1 2.83 0.68 0.17
2 0.90 0.79 0.11
3 3.87 0.65 0.19
4 1.55 0.72 0.13
5 1.91 0.79 0.14
6 1.46 0.78 0.14
7 1.68 0.77 0.13
8 2.50 0.67 0.16
9 3.00 0.77 0.11
10 1.45 0.70 0.16