我有一个data.frame,看起来像这样:
<表类>
ID
时间价值 tbody><<tr>T1 到 T2 到 T3 没有 BT1 到 BT2 到 BT3 没有 BT1 没有 BT2 没有 BT3 到 CT1 到 CT2 没有 CT3 没有 CT1 没有 CT2 没有 CT3 到 表类>
可以吗?
library(dplyr)
df %>% group_by(ID, Time) %>% filter(all(value == 'no') | value !='no') %>% distinct()
# A tibble: 9 x 3
# Groups: ID, Time [9]
ID Time value
<chr> <chr> <chr>
1 A T1 up
2 A T2 down
3 A T3 no
4 B T1 up
5 B T2 down
6 B T3 up
7 C T1 up
8 C T2 no
9 C T3 down
这也可以处理同时出现up和down的情况,通过在ifelse子句中优先考虑其中一个:
df %>% group_by(A, B) %>% summarise(C = ifelse("up" %in% C, "up", ifelse("down" %in% C, "down", "no")))