基于多条件和相互依赖变量的R中 Dataframe 过滤

643ylb08  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(119)

我有三个相互依赖的变量。我想排除所有观察结果,其中参与者在变量“fruehere_FAS_Nutzung”(之前使用过FAS)中表示“nein”(否),并在变量“frueheres_FAS_ODEG”(公司A的FAS)中表示“ausgewaehlt”(选择)或在变量“frueheres_FAS_andere”(其他公司的FAS)中表示“ausgewählt”,例如参与者13所做的。
我用的是:

fasan_scores_filtered_FAS_Nutzung <- fasan_scores %<% 
   filter(!(fruehere_FAS_Nutzung == 'nein' & frueheres_FAS_ODEG == 'ausgewaehlt')) | 
   filter(!(fruehere_FAS_Nutzung == 'nein' & frueheres_FAS_andere == 'ausgewaehlt'))

当我这样做时,我得到从 Dataframe 中排除的每个“fruehere_FAS_Nutzung = nein”,并且只保留“fruehere_FAS_Nutzung = ja”,而不管其他条件如何。但我只想排除“不”,如果他们符合上述附带条件之一

bihw5rsg

bihw5rsg1#

假设以下样本数据:

df = expand.grid(
    fruehere_FAS_Nutzung = c("ja", "nein", "weiss nicht"),
    frueheres_FAS_ODEG = c("ausgewaehlt", "nicht ausgewaehlt", NA),
    frueheres_FAS_andere = c("ausgewaehlt", "nicht ausgewaehlt", NA),
    stringsAsFactors = FALSE)

您可以像这样过滤掉不需要的行:

df[!(df$fruehere_FAS_Nutzung == "nein" &
     (!is.na(df$frueheres_FAS_ODEG) & df$frueheres_FAS_ODEG == "ausgewaehlt" |
      !is.na(df$frueheres_FAS_andere) & df$frueheres_FAS_andere == "ausgewaehlt")),]

相关问题