我的数据看起来像这样:
df <- data.frame(id=1:8,
f1 = c("A","B","B","C","C","C","A","A"),
f2 = c("A",NA,"B",NA,"B","A","B","A"),
f3 = c("A",NA,NA,NA,NA,"A","C","C"))
我想创建的是一个列,其中包含每行中存在的唯一值(NA除外)。因此,结果将是列“f_values”:
id f1 f2 f3 f_values
1 1 A A A A
2 2 B <NA> <NA> B
3 3 B B <NA> B
4 4 C <NA> <NA> C
5 5 C B <NA> CB
6 6 C A A CA
7 7 A B C ABC
8 8 A A C AC
行1是A B/c,只有A出现。ro 6是CA,因为C和A唯一出现。我会把这个函数描述为paste-wise unique。我知道可以将一些比较运算符和粘贴语句链接在一起,但真实的数据有更多的列,所以我希望有人知道更简单的方法。
2条答案
按热度按时间j8ag8udp1#
给定上面的
df
,df_new
将是您的问题中制定的期望结果。bogh5gae2#
我们也可以在
data.table
中通过使用'id'分组来实现这一点。