我正在尝试重命名 R 中的观察结果,以便我可以进行过滤,但我不断遇到错误。例如,如果数据集是
farmer fruit number
1 Sally strawberries 32
2 Joe strawberry 12
3 Bob pear 42
但我想计算有多少农民在种植草莓。
我怎样才能做到这一点
farmer fruit number
1 Sally **strawberry** 32
2 Joe strawberry 12
3 Bob pear 42
我试过了
df1 <- df %>%
mutate(fruit = str_replace(fruit, "strawberries", "strawberry"))
什么都没有改变。
我也尝试过
df1 <- df %>%
+ mutate(fruit = as.character(fruit)) %>%
+ mutate(fruit = replace(fruit, fruit = "strawberries", "strawberry"))
并出现错误。
(?i)
启动不区分大小写模式
无论字符大小写,“strawberry”都会被“strawberry”替换。
library(dplyr)
library(stringr)
df %>%
mutate(fruit = str_replace_all(fruit, "(?i)strawberries", "strawberry"))
farmer fruit number
1 Sally strawberry 32
2 Joe strawberry 12
3 Bob pear 42
数据:
df <- structure(list(farmer = c("Sally", "Joe", "Bob"), fruit = c("Strawberries",
"strawberry", "pear"), number = c(32L, 12L, 42L)), class = "data.frame", row.names = c("1",
"2", "3"))
TarJae 提供的一个小数据集可以让任何想要提供帮助的人变得更容易。
事实上你从一开始就是对的,但我怀疑你混淆了
df
和df1
df <- structure(list(farmer = c("Sally", "Joe", "Bob"), fruit =
c("strawberries", "strawberry", "pear"), number = c(32L, 12L, 42L)),
class = "data.frame",
row.names = c("1", "2", "3"))
## df
## farmer fruit number
## 1 Sally strawberries 32
## 2 Joe strawberry 12
## 3 Bob pear 42
如果我应用您自己的命令但不将其分配给
df1
我有您所期望的。
df %>% mutate(fruit = str_replace(fruit, "strawberries", "strawberry"))
当然赋值给df1没有什么错
df1 <- df %>% mutate(fruit = str_replace(fruit, "strawberries", "strawberry"))
但是我们需要检查
df1
## df1
## farmer fruit number
## 1 Sally strawberry 32
## 2 Joe strawberry 12
## 3 Bob pear 42
这是因为
mutate
函数复制了表 df
,因此表 df 保持不变。事实上,在我看来mutate
这是一个糟糕的名字选择