用另一个字符串替换字符串
Replacing character string with another character string
我有一个数据框,我试图用其他值替换其中的某些值。所以,作为一个小例子,我有一个虚拟数据框:
dummy<-c("1","2","3","4")
dummy<-data.frame(dummy)
dummy$dummy<-as.character(dummy$dummy)
odd<-c("1","3")
replace(dummy$dummy, dummy$dummy==odd, "odd")
#> [1] "odd" "2" "3" "4"
为什么这只会将“1”替换为 "odd" 而不是“3”?
我的实际数据集有更多信息(它是餐厅菜系类型,我需要用更通用的类别替换菜系类型。例如,我有菜系类型 "Italian" 和 "French" 在我的数据集中需要替换为 "European",而美食类型 "Southwestern" 和 "Pacific Northwestern" 需要替换为 "American"。
上面的想法是最有效的方法吗?
也喜欢epi99 suggested, you can use stringr::str_replace()
for this. You might also want to look over their guide to using Regular Expressions。
library(dplyr)
library(stringr)
df <- data_frame(dummy = c("1","2","3","4"))
df %>% mutate(dummy = str_replace(dummy, "1|3", "odd"))
#> # A tibble: 4 x 1
#> dummy
#> <chr>
#> 1 odd
#> 2 2
#> 3 odd
#> 4 4
听起来你的替换是一个实际变量;如果是这样,您可以用 ifelse
语句替换如下:
df <- data.frame(dummy = c("1","2","3","4"))
df$dummy <- ifelse(df$dummy %in% c(1,3), "Odd", df$dummy)
df
dummy
1 Odd
2 2
3 Odd
4 4
我们可以在 base R
levels(df$dummy)[levels(df$dummy) %in% c(1, 3)] <- "odd"
df
# dummy
#1 odd
#2 2
#3 odd
#4 4
数据
df <- data.frame(dummy = c("1","2","3","4"))
我有一个数据框,我试图用其他值替换其中的某些值。所以,作为一个小例子,我有一个虚拟数据框:
dummy<-c("1","2","3","4")
dummy<-data.frame(dummy)
dummy$dummy<-as.character(dummy$dummy)
odd<-c("1","3")
replace(dummy$dummy, dummy$dummy==odd, "odd")
#> [1] "odd" "2" "3" "4"
为什么这只会将“1”替换为 "odd" 而不是“3”?
我的实际数据集有更多信息(它是餐厅菜系类型,我需要用更通用的类别替换菜系类型。例如,我有菜系类型 "Italian" 和 "French" 在我的数据集中需要替换为 "European",而美食类型 "Southwestern" 和 "Pacific Northwestern" 需要替换为 "American"。
上面的想法是最有效的方法吗?
也喜欢epi99 suggested, you can use stringr::str_replace()
for this. You might also want to look over their guide to using Regular Expressions。
library(dplyr)
library(stringr)
df <- data_frame(dummy = c("1","2","3","4"))
df %>% mutate(dummy = str_replace(dummy, "1|3", "odd"))
#> # A tibble: 4 x 1
#> dummy
#> <chr>
#> 1 odd
#> 2 2
#> 3 odd
#> 4 4
听起来你的替换是一个实际变量;如果是这样,您可以用 ifelse
语句替换如下:
df <- data.frame(dummy = c("1","2","3","4"))
df$dummy <- ifelse(df$dummy %in% c(1,3), "Odd", df$dummy)
df
dummy
1 Odd
2 2
3 Odd
4 4
我们可以在 base R
levels(df$dummy)[levels(df$dummy) %in% c(1, 3)] <- "odd"
df
# dummy
#1 odd
#2 2
#3 odd
#4 4
数据
df <- data.frame(dummy = c("1","2","3","4"))