如何创建一个新列,将不重复的字符保留在R中以前的列上?
给定这样的数据帧:如何创建一个新列,将不重复的字符保留在R中以前的列上?,r,dplyr,R,Dplyr,给定这样的数据帧: col1 col2 col3 a b b a b a a b a c d c c d d e f f col1 col2 col3 col4 a b b a a b a b a
col1 col2 col3
a b b
a b a
a b a
c d c
c d d
e f f
col1 col2 col3 col4
a b b a
a b a b
a b a b
c d c d
c d d c
e f f e
我想创建另一个新列(我们称之为col4),其中包含每行中唯一尚未重复的值。因此,我期望的输出如下所示:
col1 col2 col3
a b b
a b a
a b a
c d c
c d d
e f f
col1 col2 col3 col4
a b b a
a b a b
a b a b
c d c d
c d d c
e f f e
我正试图找到一个尽可能简单的解决方案来获得这个输出,但目前我所有的尝试都没有成功。假设只有一个元素没有重复,我们可以在行中循环,并在使用
duplicated
创建逻辑条件后获得第一个不重复的元素
df1$col4 <- apply(df1, 1, function(x) x[!(duplicated(x)|duplicated(x,
fromLast = TRUE))][1])
df1$col4
#[1] "a" "b" "b" "d" "c" "e"
df1$col4假设只有一个元素没有重复,我们可以在使用duplicated
df1$col4 <- apply(df1, 1, function(x) x[!(duplicated(x)|duplicated(x,
fromLast = TRUE))][1])
df1$col4
#[1] "a" "b" "b" "d" "c" "e"
df1$col4