在数据框变量中查找唯一字符串

时间:2016-07-14 07:20:10

标签: r dataframe character unique elements

我有一个包含多个字符变量的数据框,我想在每一行中找到唯一的字符串。每行几列中只复制一个字符串,由NA包围。 I.E.数据框" df":

  Col1 Col2 Col3
1 ABC  ABC  NA
2  NA  DEF  DEF
3 GHI  NA   NA
4 JKL  JKL  JKL

作为输出我想要

ABC
DEF
GHI
JKL

最好是每行都有一些应用功能。我尝试了几种

的变体
apply(df,1, function(x) unique(x))

但那并不成功。如果你知道正确的功能,我认为有一个简单的方法吗?我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

我们可以使用is.na删除NA元素

unname(apply(df, 1, FUN = function(x) unique(x[!is.na(x)])))
#[1] "ABC" "DEF" "GHI" "JKL"

如果每行有多个unique元素,它将返回list(取决于每行的元素数量是否不同)。在这种情况下,我们可以paste一起创建一个字符串

unname(apply(df, 1, FUN = function(x) toString(unique(x[!is.na(x)])))) 

如果每行只有一个唯一元素,则另一个选项是pmax

 do.call(pmax, c(df, list(na.rm=TRUE)))
 #[1] "ABC" "DEF" "GHI" "JKL"

答案 1 :(得分:1)

另一个选择

levels(unlist(df))