在数据框变量中查找唯一字符串
find unique strings in data frame variables
我有一个包含多个字符变量的数据框,我想在每一行中找到唯一的字符串。每行的几列中只有一个特定的字符串被 NA 包围。 IE。数据框 "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))
但这并不成功。我认为有一个很简单的方法,如果你知道正确的功能?我该怎么做?
我们可以使用is.na
删除NA元素
unname(apply(df, 1, FUN = function(x) unique(x[!is.na(x)])))
#[1] "ABC" "DEF" "GHI" "JKL"
如果每行有多个 unique
个元素,它将 return 作为 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"
另一种选择
levels(unlist(df))
我有一个包含多个字符变量的数据框,我想在每一行中找到唯一的字符串。每行的几列中只有一个特定的字符串被 NA 包围。 IE。数据框 "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))
但这并不成功。我认为有一个很简单的方法,如果你知道正确的功能?我该怎么做?
我们可以使用is.na
删除NA元素
unname(apply(df, 1, FUN = function(x) unique(x[!is.na(x)])))
#[1] "ABC" "DEF" "GHI" "JKL"
如果每行有多个 unique
个元素,它将 return 作为 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"
另一种选择
levels(unlist(df))