Использование символов в 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 of * для обозначения одной переменной флага + для другой переменной, а затем удалить либо * или + из поля nameinfo, и использовать ее как новое имя переменной.

Благодарю.

Лучший ответ:

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

Вот другой подход, используя класс символов :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)

Оцените статью
TechArks.Ru
Добавить комментарий