R 如何基于角色的一部分生成虚拟变量?
我想根据列中是否存在特定单词来生成虚拟变量。 我举了一个例子来说明这一点:R 如何基于角色的一部分生成虚拟变量?,r,text,dummy-variable,R,Text,Dummy Variable,我想根据列中是否存在特定单词来生成虚拟变量。 我举了一个例子来说明这一点: source/medium qr_dummy Amsterdam/qr_code 0 Rotterdam/offline 0 Utrecht/online 0 如果源/中列中存在qr_代码,我希望得到1。我尝试了下面的代码,但因为qr_代码与确切的字符不匹配,所以它不会给出1 df$qr_code_dummy[df$sourceMed
source/medium qr_dummy
Amsterdam/qr_code 0
Rotterdam/offline 0
Utrecht/online 0
如果源/中列中存在qr_代码,我希望得到1。我尝试了下面的代码,但因为qr_代码与确切的字符不匹配,所以它不会给出1
df$qr_code_dummy[df$sourceMedium == "qr_code"] <- 1
如评论中所述
df$qr_code_dummy[grepl("qr_code",df$sourceMedium)] <- 1
sourceMedium qr_code_dummy
1 Amsterdam/qr_code 1
2 Rotterdam/offline 0
3 Utrecht/online 0
数据:
如评论中所述
df$qr_code_dummy[grepl("qr_code",df$sourceMedium)] <- 1
sourceMedium qr_code_dummy
1 Amsterdam/qr_code 1
2 Rotterdam/offline 0
3 Utrecht/online 0
数据:
如前所述,grepl是一个不错的选择。下面是一个使用dplyr和ifelse将布尔值更改为0和1的示例
library(dplyr)
df <- data.frame(sourceMedium = c('Amsterdam/qr_code','Rotterdam/offline','Utrecht/online'))
summary <- df %>% mutate(qr_code_dummy = ifelse(grepl('qr_code', sourceMedium), 1, 0))
summary
# sourceMedium qr_code_dummy
# 1 Amsterdam/qr_code 1
# 2 Rotterdam/offline 0
# 3 Utrecht/online 0
如前所述,grepl是一个不错的选择。下面是一个使用dplyr和ifelse将布尔值更改为0和1的示例
library(dplyr)
df <- data.frame(sourceMedium = c('Amsterdam/qr_code','Rotterdam/offline','Utrecht/online'))
summary <- df %>% mutate(qr_code_dummy = ifelse(grepl('qr_code', sourceMedium), 1, 0))
summary
# sourceMedium qr_code_dummy
# 1 Amsterdam/qr_code 1
# 2 Rotterdam/offline 0
# 3 Utrecht/online 0
使用stringr可能更具可读性。这里它位于dplyr流中,但是您可以使用str_detect而不使用它 图书馆弹琴 图书馆长 df%>% mutateqr\u code\u dummy=as.integerstr\u检测源介质,qr\u码
使用stringr可能更具可读性。这里它位于dplyr流中,但是您可以使用str_detect而不使用它 图书馆弹琴 图书馆长 df%>% mutateqr\u code\u dummy=as.integerstr\u检测源介质,qr\u码
参见helpgreplSee helpgrepllike to Adam;答案是,您可以直接执行此操作,而无需子集;as.INTEGERGREPLR\U码,df$sourceMedium@user20650您甚至可以编写greplqr_代码,df$sourcemedia*1类似于Adam;答案是,您可以直接执行此操作,而无需子集;as.INTEGERGREPLR\U码,df$sourceMedium@user20650您甚至可以编写greplqr_代码,df$sourcemedia*1