我有一个包含多个字符变量的数据框,我想在每一行中找到唯一的字符串。每行几列中只复制一个字符串,由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))
但那并不成功。如果你知道正确的功能,我认为有一个简单的方法吗?我怎么能这样做?
答案 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))