使用dplyr更改行文本
我想问dplyr是否可以更改行文本。例如,如果我有这样一个表:使用dplyr更改行文本,r,dplyr,R,Dplyr,我想问dplyr是否可以更改行文本。例如,如果我有这样一个表: Fruit Cost apple 6 apple 7 orange 3 orange 4 如何使用dplyr将水果列中的所有“苹果”更改为“柠檬”。如果dplyr不能做到这一点,那么R中是否有任何函数可以做到这一点(假设我有大量行需要更改)。谢谢。要使用dplyr执行此操作,我认为您需要使用mutate()和ifelse()语句。但我认为非dplyr选项可能更容易。如果您的“水果”栏已经
Fruit Cost
apple 6
apple 7
orange 3
orange 4
如何使用dplyr将水果列中的所有“苹果”更改为“柠檬”。如果dplyr不能做到这一点,那么R中是否有任何函数可以做到这一点(假设我有大量行需要更改)。谢谢。要使用
dplyr
执行此操作,我认为您需要使用mutate()
和ifelse()
语句。但我认为非dplyr选项可能更容易。如果您的“水果”栏已经是字符,则第一步可能是不必要的:
d$Fruit <- as.character(d$Fruit)
## The dplyr option:
#d %>% mutate( Fruit=ifelse(Fruit=="apple","lemon", Fruit ) )
## The base R option:
d$Fruit[ d$Fruit == "apple" ] <- "lemon"
d$Fruit%变异(Fruit=ifelse(Fruit==“苹果”、“柠檬”、水果))
##基本R选项:
d$Fruit[d$Fruit==“apple”]您也可以使用car
中的recode
。这将适用于因子
和字符
类
library(dplyr)
library(car)
res <- mutate(df1, Fruit= recode(Fruit, "'apple'='lemon'"))
res
# Fruit Cost
#1 lemon 6
#2 lemon 7
#3 orange 3
#4 orange 4
str(res)
#'data.frame': 4 obs. of 2 variables:
# $ Fruit: Factor w/ 2 levels "lemon","orange": 1 1 2 2
# $ Cost : int 6 7 3 4
库(dplyr)
图书馆(汽车)
resFruit
列的类别是什么?相关答案(虽然不是dplyr):@bondedust在转换为字符(第一行)后,级别将不存在。如果您想使用mutate
和ifelse
:mutate(df1,Fruit=ifelse(Fruit==“apple”,“lemon”,Fruit))
@kferris10谢谢你,但我的代码中已经有了这一点,上面已经注释掉了。:)如果我想改变多个项目,而不仅仅是苹果柠檬呢。我试过这样做:变异(df1,水果=重新编码(水果,“‘苹果’=‘柠檬’”,“‘橘子’=‘葡萄’”),但它不起作用。我尝试将这两个类都用作character和factor,但它们都在if(as.factor.result)中表示错误。谢谢。试试代码>作为分隔符<代码>变异(df1,水果=重新编码(水果,“‘苹果’=‘柠檬’;‘橙色’=‘葡萄’))
library(dplyr)
library(car)
res <- mutate(df1, Fruit= recode(Fruit, "'apple'='lemon'"))
res
# Fruit Cost
#1 lemon 6
#2 lemon 7
#3 orange 3
#4 orange 4
str(res)
#'data.frame': 4 obs. of 2 variables:
# $ Fruit: Factor w/ 2 levels "lemon","orange": 1 1 2 2
# $ Cost : int 6 7 3 4
df1$Fruit <- as.character(df1$Fruit)
str(mutate(df1, Fruit= recode(Fruit, "'apple'='lemon'")))
#'data.frame': 4 obs. of 2 variables:
#$ Fruit: chr "lemon" "lemon" "orange" "orange"
#$ Cost : int 6 7 3 4
df1 <- structure(list(Fruit = structure(c(1L, 1L, 2L, 2L),
.Label = c("apple",
"orange"), class = "factor"), Cost = c(6L, 7L, 3L, 4L)),
.Names = c("Fruit",
"Cost"), row.names = c(NA, -4L), class = "data.frame")