比较两个数据框列并将它们添加到数据框
Compare two dataframe colums and add them to the dataframe
我有一个包含两列的数据框。我想向 df
添加一个新列,其中所有值都在里面,数据帧是否与第一个列匹配。
我试过了:
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
对我做错了什么有什么建议吗?
先处理 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
或者使用 df = df[complete.cases(df),]
从初始 data.frame
中删除 NA
,然后添加该列。
如果在 A 或 B 列中有 NA
时,您确实想要 False
:
> 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
我有一个包含两列的数据框。我想向 df
添加一个新列,其中所有值都在里面,数据帧是否与第一个列匹配。
我试过了:
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
对我做错了什么有什么建议吗?
先处理 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
或者使用 df = df[complete.cases(df),]
从初始 data.frame
中删除 NA
,然后添加该列。
如果在 A 或 B 列中有 NA
时,您确实想要 False
:
> 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