[英]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.