从字符串变量创建虚拟变量
create dummy variable from string variable
我正在尝试从现有数据集中的列变量创建虚拟变量。我感兴趣的变量是这种格式的标题:
化学品 - 2015 年 3 月 31 日的委员会授权指令 (EU) 2015/863 修订了欧洲议会和理事会指令 2011/65/EU 的附件 II 关于限用物质清单(与 EEA 相关的文本)
或
委员会执行指令 (EU) 2015/2392...
我想创建一个虚拟变量来指示标题正在实施或委托。换句话说,当 "delegated" 这个词出现在我的 title 变量中时,它会被标记为 1,而其他所有内容都将被标记为 0。
谁能帮我解决这个问题?非常感谢。到目前为止,我已经使用了这个代码:
infringements$delegated <- ifelse(infringements$Title=="Delegated", 1, 0)
table(infringements$delegated, infringements$Title)
summary(infringements$delegated)
当我 运行 代码时,我得到 0 个匹配项,即使我知道有 41 个匹配项。
使用包 stringr
中的 str_detect()
library(stringr)
as.integer(str_detect(infringements$Title,"Delegated"))
infringements = data.frame(lapply(data.frame(Title=c("CHEMICALS - Commission Delegated Directive (EU) 2015/863 of 31 March 2015 amending Annex II to Directive 2011/65/EU of the European Parliament and of the Council as regards the list of restricted substances (Text with EEA relevance)","No Text","Text3Delegated")), as.character), stringsAsFactors=FALSE)
infringements$delegated = lapply(infringements$Title, function(x) ifelse(length(grep("Delegated", x))!=0, 1, 0))
我们可以做到
+(grepl('Delegated', infringements$Title))
我正在尝试从现有数据集中的列变量创建虚拟变量。我感兴趣的变量是这种格式的标题:
化学品 - 2015 年 3 月 31 日的委员会授权指令 (EU) 2015/863 修订了欧洲议会和理事会指令 2011/65/EU 的附件 II 关于限用物质清单(与 EEA 相关的文本)
或
委员会执行指令 (EU) 2015/2392...
我想创建一个虚拟变量来指示标题正在实施或委托。换句话说,当 "delegated" 这个词出现在我的 title 变量中时,它会被标记为 1,而其他所有内容都将被标记为 0。
谁能帮我解决这个问题?非常感谢。到目前为止,我已经使用了这个代码:
infringements$delegated <- ifelse(infringements$Title=="Delegated", 1, 0)
table(infringements$delegated, infringements$Title)
summary(infringements$delegated)
当我 运行 代码时,我得到 0 个匹配项,即使我知道有 41 个匹配项。
使用包 stringr
str_detect()
library(stringr)
as.integer(str_detect(infringements$Title,"Delegated"))
infringements = data.frame(lapply(data.frame(Title=c("CHEMICALS - Commission Delegated Directive (EU) 2015/863 of 31 March 2015 amending Annex II to Directive 2011/65/EU of the European Parliament and of the Council as regards the list of restricted substances (Text with EEA relevance)","No Text","Text3Delegated")), as.character), stringsAsFactors=FALSE)
infringements$delegated = lapply(infringements$Title, function(x) ifelse(length(grep("Delegated", x))!=0, 1, 0))
我们可以做到
+(grepl('Delegated', infringements$Title))