Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将一列中的多个值替换为单个值_R_Dataframe - Fatal编程技术网

R 将一列中的多个值替换为单个值

R 将一列中的多个值替换为单个值,r,dataframe,R,Dataframe,我有一个相当基本的问题。在一列中,我有几个值要替换为单个值,例如: a这将使您的数据结构保持一个如您所猜测的因素: x <- levels(a$T) levels(a$T) <- ifelse(x %in% c("E","S","T"), "AB", x) 或 编辑:如果您有许多这样的替代品,它会稍微复杂一些,但并非不可能: from <- list(c("E","S","T"), c("J", "K", "L")) to <- c("AB", "YZ") fi

我有一个相当基本的问题。在一列中,我有几个值要替换为单个值,例如:


a这将使您的数据结构保持一个如您所猜测的因素:

x <- levels(a$T)
levels(a$T) <- ifelse(x %in%  c("E","S","T"), "AB", x)

编辑:如果您有许多这样的替代品,它会稍微复杂一些,但并非不可能:

from <- list(c("E","S","T"), c("J", "K", "L"))
to   <- c("AB", "YZ")

find.in.list <- function(x, y) match(TRUE, sapply(y, `%in%`, x = x))
idx.in.list  <- sapply(levels(a$T), find.in.list, from)
levels(a$T)  <- ifelse(is.na(idx.in.list), levels(a$T), to[idx.in.list])

a$T
#  [1] AB F  G  H  I  YZ YZ YZ M  N  O  P  Q  R  AB AB
# Levels: AB F G H I YZ M N O P Q R

这将使您的数据结构保持如您所猜测的那样:

x <- levels(a$T)
levels(a$T) <- ifelse(x %in%  c("E","S","T"), "AB", x)

编辑:如果您有许多这样的替代品,它会稍微复杂一些,但并非不可能:

from <- list(c("E","S","T"), c("J", "K", "L"))
to   <- c("AB", "YZ")

find.in.list <- function(x, y) match(TRUE, sapply(y, `%in%`, x = x))
idx.in.list  <- sapply(levels(a$T), find.in.list, from)
levels(a$T)  <- ifelse(is.na(idx.in.list), levels(a$T), to[idx.in.list])

a$T
#  [1] AB F  G  H  I  YZ YZ YZ M  N  O  P  Q  R  AB AB
# Levels: AB F G H I YZ M N O P Q R
您可以使用函数“从库车重新编码”来更改系数的值

library(car)
a$T<-recode(a$T,"c('E','S','T')='AB'")
您可以使用函数“从库车重新编码”来更改系数的值

library(car)
a$T<-recode(a$T,"c('E','S','T')='AB'")

你真的想要这些因素吗??? 如果不是,我认为您不执行选项StringsAsFactors=FALSE
所以它比这简单得多…=>a[a$T%in%cE,S,T,T]你真的想要那里的因子吗??? 如果不是,我认为您不执行选项StringsAsFactors=FALSE
所以它比这简单得多…=>a[a$T%,单位为%cE,S,T,T]+1。这是正确的答案,而不是混淆视听的字符类。+1。这是正确的答案,而不是在角色类上乱搞……但是为什么这样一个不友好的界面不责怪你@Didzis而是责怪作者呢。我读过关于plyr::mapvalues的文章,但我不能在我的旧R版本上测试它。我想plyr::MapValuesLevel$T,cE,S,T,AB如果有人可以试试的话可能会有用。@flodel mapvalues可以进行一些修改mapvalues$T,cE,S,T,repAB,3hello,这真的很有帮助!非常感谢你。现在我已经意识到我需要对几个不同的T组,比如L,M,N做这件事。有可能在一行中对所有变量做这件事,而不是一组一组地做吗?@user1817709更新了我的答案。@DidzisElferts回应了你的评论,a$T…但是为什么这样一个不友好的界面不责怪你@Didzis而是责怪作者。我读过关于plyr::mapvalues的文章,但我不能在我的旧R版本上测试它。我想plyr::MapValuesLevel$T,cE,S,T,AB如果有人可以试试的话可能会有用。@flodel mapvalues可以进行一些修改mapvalues$T,cE,S,T,repAB,3hello,这真的很有帮助!非常感谢你。现在我已经意识到我需要对几个不同的T组,比如说L,M,N做这件事。有可能在一行中对所有变量做这件事而不是一组一组地做吗?@user1817709更新了我的答案。@DidzisElferts回应了你的评论,如果T是因子,a$T,因为在这种情况下,这将给出NA值而不是AB。Ohhhhh!!!这是因为我的选项$stringAsFactors==FALSE,因为R.2.12.xr维护字符串的哈希表,我认为在这些情况下不需要因子…如果T是factor,在这种情况下,这将给出NA值,而不是AB.Ohhhh!!!这是因为我的选项$stringAsFactors==FALSE,因为R.2.12.xr维护字符串的哈希表,我认为在这些情况下不需要使用因子。。。