比较两个数据帧列并将它们添加到数据帧

时间:2015-01-27 09:12:26

标签: r statistics

我有一个包含两列的数据框。我想向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    

有什么建议我做错了吗?

1 个答案:

答案 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列中有FalseNA

> 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
相关问题