dplyr:使用文本的条件变异(grep?)
dplyr: Conditional mutate using text (grep?)
是否可以在 dplyr 的 mutate 中使用文本模式匹配和数字替换?
这是一个玩具数据集:
library(dplyr)
df <- data.frame(Group = c("Group1", "Group1", "Group1", "Group1", "Group2", "Group2"), Activity = c("1. First really long response", "2. Second really long response", "1. First really long response", "2. Second really long response", "1. First really long response", "2. Second really long response"))
我创建了一个新数据框,其中包含选择“1. 第一个很长的回复”的受访者数量。
test <- df %>%
group_by(Group) %>% summarise(
`Participants` = length(Activity[Activity == "1. First really long response"])
)
有效。
假设我想避免使用对变量 Activity 的整个响应。 (回复真的很长。)是否可以做类似下面的事情(这显然行不通)?
test <- df %>%
group_by(Group) %>% summarise(
`Participants` = ifelse(grepl("1.", Activity), length(Activity)))
类似于:
- 在 Activity 变量中查找以“1”开头的内容。
- 如果找到,请标记为 TRUE。
- 计算新的 Participants 变量中总共有多少个 TRUE。
在 R 中,您经常通过对逻辑向量求和来计算事物。你可以这样做
df %>%
group_by(Group) %>%
summarise(Participants = sum(grepl("1.", Activity)))
是否可以在 dplyr 的 mutate 中使用文本模式匹配和数字替换?
这是一个玩具数据集:
library(dplyr)
df <- data.frame(Group = c("Group1", "Group1", "Group1", "Group1", "Group2", "Group2"), Activity = c("1. First really long response", "2. Second really long response", "1. First really long response", "2. Second really long response", "1. First really long response", "2. Second really long response"))
我创建了一个新数据框,其中包含选择“1. 第一个很长的回复”的受访者数量。
test <- df %>%
group_by(Group) %>% summarise(
`Participants` = length(Activity[Activity == "1. First really long response"])
)
有效。
假设我想避免使用对变量 Activity 的整个响应。 (回复真的很长。)是否可以做类似下面的事情(这显然行不通)?
test <- df %>%
group_by(Group) %>% summarise(
`Participants` = ifelse(grepl("1.", Activity), length(Activity)))
类似于:
- 在 Activity 变量中查找以“1”开头的内容。
- 如果找到,请标记为 TRUE。
- 计算新的 Participants 变量中总共有多少个 TRUE。
在 R 中,您经常通过对逻辑向量求和来计算事物。你可以这样做
df %>%
group_by(Group) %>%
summarise(Participants = sum(grepl("1.", Activity)))