Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据多个条件选择观测值_R_Conditional Statements_Multiple Conditions - Fatal编程技术网

R 根据多个条件选择观测值

R 根据多个条件选择观测值,r,conditional-statements,multiple-conditions,R,Conditional Statements,Multiple Conditions,对于每个受试者,根据以下内容保留一次观察(或一行): id var1 var2 var3 1 100 L S 1 100 L B 1 2 C B 1 2 C S 2 5 C S 2 10 L S 2 NA L B 2 NA C B 如果var2=c和var3=B,则保留该观察结果。 如果没有,请检查如果var2=c和var3=S,并保留观察结果。 如果没有,则检查var2=L和var3=B是否, 最

对于每个受试者,根据以下内容保留一次观察(或一行):

id   var1   var2    var3
1   100 L   S
1   100 L   B
1   2   C   B
1   2   C   S
2   5   C   S
2   10  L   S
2   NA  L   B
2   NA  C   B
如果
var2=c和var3=B
,则保留该观察结果。 如果没有,请检查
如果var2=c和var3=S
,并保留观察结果。 如果没有,则检查var2=L和var3=B是否, 最后,检查var2=L和var3=S是否

id   var1   var2    var3
1   100 L   S
1   100 L   B
1   2   C   B
1   2   C   S
2   5   C   S
2   10  L   S
2   NA  L   B
2   NA  C   B
任何帮助都将不胜感激

id   var1   var2    var3
1   100 L   S
1   100 L   B
1   2   C   B
1   2   C   S
2   5   C   S
2   10  L   S
2   NA  L   B
2   NA  C   B
我的数据如下所示:

id   var1   var2    var3
1   100 L   S
1   100 L   B
1   2   C   B
1   2   C   S
2   5   C   S
2   10  L   S
2   NA  L   B
2   NA  C   B
我期望的结果是:

id   var1   var2    var3
1   100 L   S
1   100 L   B
1   2   C   B
1   2   C   S
2   5   C   S
2   10  L   S
2   NA  L   B
2   NA  C   B
id   var1   var2    var3
1   2   C   B
2   5   C   S

下面是一个使用dplyr的想法

id   var1   var2    var3
1   100 L   S
1   100 L   B
1   2   C   B
1   2   C   S
2   5   C   S
2   10  L   S
2   NA  L   B
2   NA  C   B
library(dplyr)
x <- c('CB', 'CS', 'LB', 'LS') #vector with conditions
df %>% 
  group_by(id) %>% 
  na.omit() %>% 
  slice(order(match(paste0(var2, var3), x))[1])

#Source: local data frame [2 x 4]
#Groups: id [2]

#     id  var1   var2   var3
#  <int> <int> <fctr> <fctr>
#1     1     2      C      B
#2     2     5      C      S

我不明白…你能更好地解释一下条件吗?第一个代码块——你在其中显示赋值——没有意义。例如“var2=c和var3=B,如果不是,那么”。“如果不是的话”是什么意思?这里测试的是什么?你的意思是“
if(var3==“B”){var2试着读一下这个答案:但是对于
id=2
你也有
C
B
。为什么你要选择
C
S
谢谢。你的意思是CB必须合并???@sri它不必合并,但基于“重要性”比较和匹配起来更容易