首页 > 解决方案 > r 将二元响应折叠为单一响应

问题描述

这是我的数据集

 State   Response
 AL      NO
 AR      NO
 AK      NO
 AZ      NO
 CA      YES
 CA      NO
 CO      YES
 CO      NO
 FL      NO
 GA      NO

有些州像 CA、CO 一样是是和否。我如何折叠每个州的是、否值并将是、否更改为是。这是我的预期输出

 State   Response
 AL      NO
 AR      NO
 AK      NO
 AZ      NO
 CA      YES
 CO      YES
 FL      NO
 GA      NO

任何建议都非常感谢。谢谢。

标签: rcollapse

解决方案


我们可以arrange通过“状态”和“响应”的逻辑向量来划分行,然后filter是唯一行

library(dplyr)
df1 %>%
   arrange(State, Response != "YES") %>%
   filter(!duplicated(State))

-输出

   State Response
1    AK       NO
2    AL       NO
3    AR       NO
4    AZ       NO
5    CA      YES
6    CO      YES
7    FL       NO
8    GA       NO

数据

df1 <- structure(list(State = c("AL", "AR", "AK", "AZ", "CA", "CA", 
"CO", "CO", "FL", "GA"), Response = c("NO", "NO", "NO", "NO", 
"YES", "NO", "YES", "NO", "NO", "NO")), class = "data.frame", row.names = c(NA, 
-10L))

推荐阅读