R:ifelse语句:比较data.frames
我有两个数据帧,我试图比较一个数据帧和另一个数据帧中的值 如果表1和表2中的值都匹配,则表2中的第三个值将插入表1 示例表格我的DFR:ifelse语句:比较data.frames,r,if-statement,dataframe,R,If Statement,Dataframe,我有两个数据帧,我试图比较一个数据帧和另一个数据帧中的值 如果表1和表2中的值都匹配,则表2中的第三个值将插入表1 示例表格我的DF words number 1 it 1 2 was 2 3 the 3 4 LTD QTY 4 5 end 5 6 of 6 7 winter 7 表x.sub lev_dist Var1 Var2 31
words number
1 it 1
2 was 2
3 the 3
4 LTD QTY 4
5 end 5
6 of 6
7 winter 7
表x.sub
lev_dist Var1 Var2
31 1 LTD QTY LTD QTY
我想说的是,如果x.sub中的Var1等于MyDF中的单词,那么在MyDF中单词旁边的第三列中插入x.sub.lev_dist
我的尝试在下面,但结果中始终产生3,而不是lev_值
mydf$lev_dist <- ifelse(test = (mydf$words == x.sub$Var1),x.sub$Var1,0)
有人能帮忙吗这个
x.sub$Var1
是一个因子
列。因此,当我们做ifelse
时,我们得到因子的数值级别。将ifelse中的x.sub$Var1
替换为as.character(x.sub$Var1)
mydf$lev_dist <- ifelse(mydf$words == as.character(x.sub$Var1)),
x.sub$lev_dist,0)
mydf$lev_distx.sub$Var1
是一个因子
列。因此,当我们做ifelse
时,我们得到因子的数值级别。将ifelse中的x.sub$Var1
替换为as.character(x.sub$Var1)
mydf$lev_dist <- ifelse(mydf$words == as.character(x.sub$Var1)),
x.sub$lev_dist,0)
mydf$lev_dist您也可以使用merge
:
x.sub = setNames(x.sub,c('lev_dist','words','Var2'))
df_ = merge(df, x.sub[,1:2], by='words', all=T)
df_[is.na(df_)]=0
# >df_
# words number lev_dist
#1 end 5 0
#2 it 1 0
#3 LTD QTY 4 1
#4 of 6 0
#5 the 3 0
#6 was 2 0
#7 winter 7 0
您还可以使用合并:
x.sub = setNames(x.sub,c('lev_dist','words','Var2'))
df_ = merge(df, x.sub[,1:2], by='words', all=T)
df_[is.na(df_)]=0
# >df_
# words number lev_dist
#1 end 5 0
#2 it 1 0
#3 LTD QTY 4 1
#4 of 6 0
#5 the 3 0
#6 was 2 0
#7 winter 7 0
检查x.sub$Var1是否为系数。在这种情况下,尝试as.character(x.sub$Var1),0)
您绝对正确……这是一个非常严重的错误,但感谢您选择它……最终的答案是:mydf$lev_dist您还可以尝试使用data.table
包及其二进制连接来高效地解决它,这是沿着库(data.table)进行的;临时检查x.sub$Var1是否为系数。在这种情况下,尝试as.character(x.sub$Var1),0)
您绝对正确……这是一个非常严重的错误,但感谢您选择它……最终的答案是:mydf$lev_dist您还可以尝试使用data.table
包及其二进制连接来高效地解决它,这是沿着库(data.table)进行的;临时雇员