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它不必合并,但基于“重要性”比较和匹配起来更容易