Цель:
Я просматриваю пример данных Twitter и проверяю, содержат ли мои данные в столбце "Tweet"
строку слов "yo creo."
Если твит содержит "yo creo,"
, я хотел бы напечатать «1» в столбце "Subject Expression"
.
Ошибка:
Я получаю сообщение об ошибке: необходимо подмножество столбцов с допустимым вектором нижнего индекса. x Нижний индекс имеет неверный тип logical
. ℹ Должен быть числовым или символьным.
Вот мой код:
#Read in data
MyData <-read.csv("/Users/mydata/Desktop/MyData.csv")
#Append subject expression column to dataframe
MyData$SubjectExpression <- ""
#Count instances of subject expression using select
MyData%>%
mutate(SubjectExpression)=
case_when(
select(MyData, Tweet, contains("yo creo") == '1')
)
2 ответа
У вас есть несколько проблем.
mutate
синтаксисdata %>% mutate(column = value)
- вам нужно сохранить определение нового столбца внутри mutate()
.- Внутри большинства функций
dplyr
, включаяmutate()
, вы можете использовать имена столбцов напрямую и без кавычек. Вам не нужноselect()
столбец (select()
предназначен для сохранения одних столбцов и удаления других) - Синтаксис аргумента
case_when()
:test_1 ~ value_1, test_2 ~ value_2
contains()
специально создан для имен столбцов, чтобы определить наличие строки в столбце/векторе, мы будем использоватьstringr::str_detect
mutate()
может создавать совершенно новые столбцы. Вам не нужно инициализировать столбец с помощьюMyData$SubjectExpression <- ""
. Вы должны просто удалить эту строку.
Внеся все эти изменения, мы получим следующее:
MyData%>%
mutate(SubjectExpression =
case_when(
stringr::str_detect(Tweet, "yo creo") ~ 1,
TRUE ~ 0
)
)
Альтернатива base R с использованием grepl
MyData$SubjectExpression <- grepl("yo creo", MyData$Tweet)*1
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.