根据R中的条件填充列

时间:2020-01-24 06:08:52

标签: r

我试图根据包含出席R编程中某些事件的多个列的条件,用地名填充列(例如,旧金山,圣何塞等城市名称)。

例如,我的数据(称为df)将如下所示:

Name     question1        question2        question3      question4    CityName
A           Y                Y                N              N   
B           N                N                N              N
C           Y                N                Y              Y

我想填充一个城市名称列,条件是如果该人在问题1或2上回答Y,则城市名称为“旧金山”,而如果该人在两个问题上均回答N,则城市名称将为成为“圣何塞”。

因此,最终结果将是这样:

Name     question1        question2        question3      question4     CityName
A           Y                Y                N              N         San Francisco
B           N                N                N              N         San Jose
C           Y                N                Y              Y         San Francisco

我不知道如何在存在以下代码的条件(在这种情况下为条件)下,用“ San Francisco”之类的字符填充列,该条件将用TRUE或FALSE填充CityName列。

df <-mutate[df, CityName = (question1 == "Y")]

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用case_when检查多个条件并相应地分配输出。如果您以后有更多条件需要检查,则将很容易进行扩展。

library(dplyr)

df %>%
  mutate(City_Name = case_when(
     question1 == "Y" | question2 == "Y" ~ "San Francisco", 
     question1 == "N" & question2 == "N" ~ "San Jose",
     TRUE ~ NA_character_))


#  Name question1 question2 question3 question4     City_Name
#1    A         Y         Y         N         N San Francisco
#2    B         N         N         N         N      San Jose
#3    C         Y         N         Y         Y San Francisco