我有一个包含两列的数据框。我想向df
添加一个新的colume,其中所有值都在里面,数据帧与第一个colume匹配。
我试过了:
df<-data.frame(A=c("1","test","2","3",NA,"Test", NA),B=c("1","No Match","No Match","3",NA,"Test", "No Match"))
df[df$A == df$B ]
但是,我得到了:
Error in Ops.factor(df$A, df$B) : level sets of factors are different
有什么建议我做错了吗?
答案 0 :(得分:1)
首先处理NA
,然后添加您的专栏:
> df[is.na(df)]=""
> df$New = with(df, A==B)
> df
A B New
1 1 1 TRUE
2 test No Match FALSE
3 2 No Match FALSE
4 3 3 TRUE
5 TRUE
6 Test Test TRUE
7 No Match FALSE
或者使用NA
从您的初始data.frame
移除df = df[complete.cases(df),]
,然后添加该列。
如果您确实想要在A或B列中有False
时NA
:
> transform(df, New=ifelse(is.na(A)|is.na(B), FALSE, df$A==df$B))
A B New
1 1 1 TRUE
2 test No Match FALSE
3 2 No Match FALSE
4 3 3 TRUE
5 <NA> <NA> FALSE
6 Test Test TRUE
7 <NA> No Match FALSE