R 仅将某些因子转换为其他因子
我正在尝试构建一个因子列,它与另外两个因子级别完全不同的因子列相关联。下面是示例数据R 仅将某些因子转换为其他因子,r,conditional,categorical-data,recode,R,Conditional,Categorical Data,Recode,我正在尝试构建一个因子列,它与另外两个因子级别完全不同的因子列相关联。下面是示例数据 set.seed(1234) a<-sample(LETTERS[1:10],50,replace=TRUE) b<-sample(letters[11:20],50,replace=TRUE) df<-data.frame(a,b) df$a<-as.factor(df$a) df$b<-as.factor(df$b) set.seed(1234) a我认为你需要对角色值进行一
set.seed(1234)
a<-sample(LETTERS[1:10],50,replace=TRUE)
b<-sample(letters[11:20],50,replace=TRUE)
df<-data.frame(a,b)
df$a<-as.factor(df$a)
df$b<-as.factor(df$b)
set.seed(1234)
a我认为你需要对角色值进行一些欺骗。这似乎可以做到
w <- df$a == "F"
df$c <- factor(replace(as.character(df$a), w, as.character(df$b)[w]))
我认为你需要对角色的价值观做一些欺骗。这似乎可以做到
w <- df$a == "F"
df$c <- factor(replace(as.character(df$a), w, as.character(df$b)[w]))
正如我之前的评论,使用dplyr
的解决方案:
df %>% mutate(c = ifelse(a == "F", as.character(b), as.character(a)))
正如我之前的评论,使用dplyr
的解决方案:
df %>% mutate(c = ifelse(a == "F", as.character(b), as.character(a)))
如果您计划做任何涉及列组合作为因素的事情,例如,比较,您应该重构到相同的级别集
u<-union(levels(df$a),levels(df$b))
df$a<-factor(df$a,u)
df$b<-factor(df$b,u)
df$c<-df$a
ind<-df$a=="F"
df$c[ind]<-df$b[ind]
否则第一行将失败。如果您计划执行任何涉及列组合作为因素的操作,例如,比较,您应该重构到相同的级别集
u<-union(levels(df$a),levels(df$b))
df$a<-factor(df$a,u)
df$b<-factor(df$b,u)
df$c<-df$a
ind<-df$a=="F"
df$c[ind]<-df$b[ind]
否则第一行将失败。使用dplyr
它只是df%>%的变异(c=ifelse(a==“F”,“F”,0))
但是我想知道当a
不是F
时,应该是c
什么值?我已经将其设置为0
@SabDeM:是的,这很接近,但我正在尝试用b列中的小写值替换所有的“F”,而不是创建所有“F”的位置向量。使用dplyr
它只是df%>%的变异(c=ifelse(a==“F”,“F”,0))
但是我想知道当a
不是F
时c
应该是什么值?我已经将其设置为0
@SabDeM:是的,这很接近,但我正在尝试用b列中的小写值替换所有的“F”,而不是创建所有“F”的位置向量。没问题。喜欢这个屏幕名,顺便说一句。很有趣。没问题。我喜欢这个屏幕名,顺便说一句。非常有趣。