簡體   English   中英

如何創建以 R 中的另一列為條件的新列?

[英]How to create new column conditioned on another column in R?

假設我有數據:

df <- data.frame (RR_Code  = c( "848140", "848180", "848190", "848310", "848360", "848410", "848490", "850131", "850132", "850133"),
                  Model = c("X1", "FG", "FD", "XR", "RT", "FG", "CV", "GH", "ER", "RF"))

   RR_Code Model
1   848140    X1
2   848180    FG
3   848190    FD
4   848310    XR
5   848360    RT
6   848410    FG
7   848490    CV
8   850131    GH
9   850132    ER
10  850133    RF

現在我想根據 filer.df 創建一個新列,如果 RR_Code 包含在 filter.df 中,則為 1,否則為 0。

filter.df <- c("848410", "848490", "850131", "850132")

預期結果:

   RR_Code Model filter
1   848140    X1      0
2   848180    FG      0
3   848190    FD      0
4   848310    XR      0
5   848360    RT      0
6   848410    FG      1
7   848490    CV      1
8   850131    GH      1
9   850132    ER      1
10  850133    RF      0

我們可以做的

df$filter <- +(df$RR_Code %in% filter.df)

df
#   RR_Code Model filter
#1   848140    X1      0
#2   848180    FG      0
#3   848190    FD      0
#4   848310    XR      0
#5   848360    RT      0
#6   848410    FG      1
#7   848490    CV      1
#8   850131    GH      1
#9   850132    ER      1
#10  850133    RF      0

有幾種方法可以做到這一點,我的第一個直覺是使用case_when中的dplyr

df$new_column <- case_when(df$RR_Code %in% filter.df ~ 1,
                           TRUE ~ 0)

哪個會返回:

       RR_Code Model new_column
1   848140    X1          0
2   848180    FG          0
3   848190    FD          0
4   848310    XR          0
5   848360    RT          0
6   848410    FG          1
7   848490    CV          1
8   850131    GH          1
9   850132    ER          1
10  850133    RF          0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM