Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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_Conditional_Categorical Data_Recode - Fatal编程技术网

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”的位置向量。没问题。喜欢这个屏幕名,顺便说一句。很有趣。没问题。我喜欢这个屏幕名,顺便说一句。非常有趣。