我有两个列,如果它们不相同,我想将它们折叠。如果它们相同,则保留值。如果有一个NA
,则保留另一个。
df
# element1 element2
#1 A
#2 B B
#3 C D
#4 A <NA>
我需要以下栏目:
# element1 element2 element12
#1 A A
#2 B B B
#3 C D C,D
#4 A <NA> A
有什么提示吗?
数据来源:
df = data.frame(element1 = c("A", "B", "C","A"),
element2 = c("", "B","D", NA));df
4条答案
按热度按时间eaf3rand1#
请尝试使用
apply()
执行以下操作:输出量:
或者
dplyr
版本:输出量:
trnvg8h32#
这是否有效:
2vuwiymt3#
下面是另一个
tidyverse
选项。如果你想去掉令人讨厌的空字符串
""
,把它们变成NA
,你可以使用na_if
。如果字符串不同,
case_when
可以将它们连接起来,如果缺少其中一个字符串,则使用coalesce
(NA
)。如果两者都不是这种情况,则两列相同,并且仅设置为第一个值。
输出
p1tboqfb4#
在
base R
中,我们可以通过paste
和sub
来实现