【发布时间】:2015-08-07 18:35:45
【问题描述】:
我正在尝试构建一个与其他两个具有完全不同因子水平的因子列相关的因子列。这是示例数据。
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)
我要制定的规则创建了一个新列 c,它基于 a 列的值来确定它的因子水平值。 如果 a 列中的任何行 =“F”,则 c 列中的该行将等于 b 列的条目。我正在尝试的代码:
dfn<-dim(df)[1]
for (i in 1:dfn){
df$c[i]<-ifelse(df$a[i]=="F",df$b[i],df$a[i])
}
df
只吐出 b 列的因子级别的编号索引,而不是实际条目。我做错了什么?
【问题讨论】:
-
使用
dplyr只是df %>% mutate(c = ifelse(a == "F", "F", 0))但我想知道a不是F时c应该是什么值?我已将其设置为0。 -
@SabDeM:是的,这很接近,但我试图用 b 列中的小写值替换所有“F”,而不是创建所有“F”位置的向量s.
标签: r conditional categorical-data recode