【发布时间】:2020-08-18 19:50:11
【问题描述】:
假设这是我的数据框:
df <- data.frame(replicate(10,sample(0:50,20,rep=TRUE)))
S X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 3 26 39 25 24 4 46 42 8 42
2 40 6 50 50 22 2 40 24 26 17
3 32 45 18 7 19 6 33 12 0 13
4 3 45 43 32 16 33 25 18 35 45
5 7 36 2 25 16 20 24 14 27 29
6 45 4 12 13 50 35 38 1 27 34
7 18 43 38 16 34 18 19 45 4 34
8 18 9 33 38 18 13 23 44 41 4
9 28 34 6 3 14 11 47 4 21 50
10 6 48 42 46 48 42 12 33 1 32
11 28 20 37 2 26 33 5 2 22 27
12 40 30 41 45 28 6 5 46 21 46
13 1 47 46 37 0 3 11 45 12 11
14 20 0 9 38 42 15 44 1 2 45
15 49 29 25 41 38 26 20 34 50 0
16 2 5 47 6 36 34 28 36 32 38
17 15 22 50 13 26 9 37 40 41 23
18 44 27 47 37 26 34 31 36 44 12
19 47 41 19 2 50 44 48 36 34 38
20 25 31 28 34 8 19 3 13 14 23
我需要排除 8 列或更多列 (X1:X10) 中值高于 30 的主题 ('S')。也就是说,只排除那些有 8 倍或更多的值高于 30 的人(例如主题 19)。我在想也许'ifelse'函数可能有用,但我真的不知道如何实现它。
非常感谢任何帮助!非常感谢!
【问题讨论】:
-
我想知道您为什么接受
subset(df,rowSums(df > 30)>=8),因为这并没有排除那些“8 倍或更多值高于 30(例如主题 19)”但而是排除所有其他行。要使那段代码排除需要更改的行:subset(df,!rowSums(df > 30) >= 8)。请看一下我的答案,我已经更新并提供了更多解释。
标签: r if-statement filter