英文:
Create a new variable based on values in two columns and list of values in a vector
问题
我有一个包含列"V1"和"V2"的数据框。
Z <- c('931', '907', '905', '902', '8552', '855', '8542', '854', '8532', '853', '852', '851', '850')
我想要在数据框中添加一个新变量"Match",如果满足以下条件,则"Match"取值为1、2或3:
"Match=1",如果"V1"和"V2"中的值相同
"Match=2",如果"V1"和"V2"中的值都包含在向量"Z"中的任何值中
"Match=3",如果"V1"或"V2"中的值包含在向量"Z"中的值之外的任何值
最终的数据框应该具有如下所示的"Match"列中的值:
V1 V2 Match
8552 689 3
576 8552 3
8552 907 2
8552 85 3
8552 902 2
8552 783 3
931 367 3
8552 1090 3
8552 905 2
8552 8552 1
8552 1004 3
113 907 3
8552 1001 3
8542 564 3
850 720 3
英文:
I have a dataframe with columns "V1" and "V2".
Z<- c('931', '907','905','902','8552','855','8542','854','8532','853','852','851','850')
I want to add a new variable "Match" to the dataframe which takes the values 1
, 2
, or 3
if the following conditions satisfies:
Match=1
, if value in V1
and V2
are same
Match=2
, if value in both V1
and V2
contain any of the values in vector Z
Match=3
, if value in V1
or V2
contain any values other than the values in vector Z
The resulting dataframe should have the values as given in column Match
.
V1 V2 Match
8552 689 3
576 8552 3
8552 907 2
8552 85 3
8552 902 2
8552 783 3
931 367 3
8552 1090 3
8552 905 2
8552 8552 1
8552 1004 3
113 907 3
8552 1001 3
8542 564 3
850 720 3
答案1
得分: 0
你可以使用 {dplyr} 包中的 case_when 语句,就像这样:
df %>% mutate(Match = case_when(V1 == V2 ~ 1,
V1 %in% Z & V2 %in% Z ~ 2,
!(V1 %in% Z) | !(V2 %in% Z) ~ 3)
请注意,这是代码部分,不需要翻译。
英文:
you can use a case_when statement from the {dplyr} package. like so:
df %>% mutate(Match = case_when(V1 == V2 ~ 1,
V1 %in% Z & V2 %in% Z ~ 2,
!(V1 %in% Z) | !(V2 %in% Z) ~ 3)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论