使用字符串中的字符创建新变量

时间:2014-07-22 17:22:39

标签: r string

数据我从网上删除时使用*字符表示一个字符而+表示另一个字符。

以下是一个示例:

# Original Data
original_df <- data.frame(c("Randy Watson*+", "Cleo McDowell*", "Darryl Jenks"))
names(original_df) <- 'nameinfo'

original_df

我想将数据转换为这样的输出:

# What I want the Data to look like
name <- c("Randy Watson", "Cleo McDowell", "Darryl Jenks")
this_thing <- c("1", "1", "0")
that_thing <- c("1", "0", "0")
desired_df <- data.frame(name_column, this_thing, that_thing)

desired_df

我基本上想要使用*的prsense来表示一个标志变量,+用于另一个变量,然后从nameinfo字段中删除*或+并将其用作新的变量名。

感谢。

2 个答案:

答案 0 :(得分:2)

grepl在这里运作良好:

original_df$this_thing <- grepl("\\*", original_df$nameinfo)
original_df$that_thing <- grepl("\\+", original_df$nameinfo)
original_df$nameinfo <- gsub("\\*|\\+", "", original_df$nameinfo)
original_df

##        nameinfo this_thing that_thing
## 1  Randy Watson       TRUE       TRUE
## 2 Cleo McDowell       TRUE      FALSE
## 3  Darryl Jenks      FALSE      FALSE

答案 1 :(得分:0)

这是一种不同的方法,使用字符类:punct:和单个gsub调用

original_df <- data.frame(c("Randy Watson*+", "Cleo McDowell*", "Darryl Jenks"))
names(original_df) <- 'nameinfo'    
original_df$this_thing <- c("1", "1", "0")
original_df$that_thing <- c("1", "0", "0")
original_df$nameinfo <- gsub("[[:punct:]]", "", original_df$nameinfo)